roda-rest_api 1.4.5 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,93 @@
1
+ require "minitest/autorun"
2
+ require "roda"
3
+ require "json"
4
+ require "stringio"
5
+ require "rack/test"
6
+
7
+ module TestHelpers
8
+ include Rack::Test::Methods
9
+
10
+
11
+ def app(type=nil, opts={}, &block)
12
+ case type
13
+ when :new
14
+ @app = _app{route(&block)}
15
+ when :bare
16
+ @app = _app(&block)
17
+ when Symbol
18
+ @app = _app do
19
+ plugin type, opts
20
+ route(&block)
21
+ end
22
+ else
23
+ @app ||= _app{route(&block)}
24
+ end
25
+ end
26
+
27
+ def request
28
+ Rack::MockRequest.new(@app)
29
+ end
30
+
31
+ def _app(&block)
32
+ c = Class.new(Roda)
33
+ c.class_eval(&block)
34
+ Rack::Lint.new c
35
+ end
36
+
37
+ class Mock
38
+
39
+ attr_accessor :id, :name, :price
40
+
41
+ def self.find(params)
42
+ if params[:page] || params[:album_id]
43
+ [new(1, 'filtered' + params[:album_id].to_s )]
44
+ else
45
+ [new(1, 'foo'), new(2, 'bar')]
46
+ end
47
+ end
48
+
49
+ def self.create_or_update(atts)
50
+ if id = atts.delete(:id)
51
+ self[id].save(atts)
52
+ else
53
+ self.new(1, atts[:name], atts[:price])
54
+ end
55
+ end
56
+
57
+ def self.[](id)
58
+ if id
59
+ if id.to_i > 12
60
+ raise DBNotFoundError
61
+ end
62
+ id == 'new' ? new : new(id.to_i, name: 'foo')
63
+ end
64
+ end
65
+
66
+ def initialize(id = nil, name = nil, price = nil)
67
+ @id = id
68
+ @name = name
69
+ @price = price
70
+ end
71
+
72
+ def save(atts)
73
+ self.name = atts[:name]
74
+ self.price = atts[:price]
75
+ self
76
+ end
77
+
78
+ def destroy
79
+ ''
80
+ end
81
+
82
+ def to_json(state = nil)
83
+ {id: @id, name: @name, price: @price, class: self.class.name }.to_json(state)
84
+ end
85
+
86
+ end
87
+
88
+ class Album < Mock ; end
89
+ class Artist < Mock ; end
90
+
91
+ class DBNotFoundError < StandardError ; end
92
+
93
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: roda-rest_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.5
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michel Benevento
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-17 00:00:00.000000000 Z
11
+ date: 2015-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: roda
@@ -24,56 +24,35 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '10'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '10'
41
- - !ruby/object:Gem::Dependency
42
- name: minitest
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '5.5'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '5.5'
55
- - !ruby/object:Gem::Dependency
56
- name: rack-test
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.6'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0.6'
69
- description: A Roda plugin for RESTful APIs
27
+ description: Create restful API easily with the Roda framework
70
28
  email: michelbenevento@yahoo.com
71
29
  executables: []
72
30
  extensions: []
73
- extra_rdoc_files: []
31
+ extra_rdoc_files:
32
+ - README.md
74
33
  files:
34
+ - ".document"
35
+ - Gemfile
36
+ - README.md
37
+ - Rakefile
38
+ - VERSION
75
39
  - lib/roda/plugins/rest_api.rb
76
40
  - lib/roda/rest_api.rb
41
+ - roda-rest_api.gemspec
42
+ - test/rest_api_api_test.rb
43
+ - test/rest_api_form_input_test.rb
44
+ - test/rest_api_id_pattern_test.rb
45
+ - test/rest_api_nested_test.rb
46
+ - test/rest_api_perf_benchmark.rb
47
+ - test/rest_api_permit_test.rb
48
+ - test/rest_api_resource_test.rb
49
+ - test/rest_api_routes_test.rb
50
+ - test/rest_api_serialize_test.rb
51
+ - test/rest_api_singleton_test.rb
52
+ - test/rest_api_split_route_test.rb
53
+ - test/rest_api_upgrade_test.rb
54
+ - test/rest_api_wrapper_test.rb
55
+ - test/test_helpers.rb
77
56
  homepage: http://github.com/beno/roda-rest_api
78
57
  licenses:
79
58
  - MIT
@@ -94,8 +73,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
73
  version: '0'
95
74
  requirements: []
96
75
  rubyforge_project:
97
- rubygems_version: 2.4.2
76
+ rubygems_version: 2.4.5
98
77
  signing_key:
99
78
  specification_version: 4
100
- summary: REST APIs with Roda
79
+ summary: Restful resources for Roda
101
80
  test_files: []