roda-rest_api 1.4.5 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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: []