acfs 1.0.0.dev.1.b305 → 1.0.0

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.
Files changed (89) hide show
  1. checksums.yaml +5 -13
  2. data/CHANGELOG.md +64 -0
  3. data/README.md +2 -2
  4. data/acfs.gemspec +4 -4
  5. data/lib/acfs.rb +7 -5
  6. data/lib/acfs/adapter/base.rb +0 -2
  7. data/lib/acfs/adapter/typhoeus.rb +17 -13
  8. data/lib/acfs/collections/paginatable.rb +10 -10
  9. data/lib/acfs/configuration.rb +4 -5
  10. data/lib/acfs/errors.rb +10 -9
  11. data/lib/acfs/global.rb +16 -7
  12. data/lib/acfs/location.rb +11 -11
  13. data/lib/acfs/middleware/base.rb +1 -2
  14. data/lib/acfs/middleware/json.rb +27 -0
  15. data/lib/acfs/middleware/logger.rb +0 -2
  16. data/lib/acfs/middleware/msgpack.rb +30 -0
  17. data/lib/acfs/middleware/print.rb +0 -2
  18. data/lib/acfs/middleware/serializer.rb +39 -0
  19. data/lib/acfs/operation.rb +5 -5
  20. data/lib/acfs/request.rb +4 -4
  21. data/lib/acfs/request/callbacks.rb +2 -3
  22. data/lib/acfs/resource.rb +2 -2
  23. data/lib/acfs/resource/attributes.rb +10 -37
  24. data/lib/acfs/resource/attributes/base.rb +10 -19
  25. data/lib/acfs/resource/attributes/boolean.rb +10 -8
  26. data/lib/acfs/resource/attributes/date_time.rb +6 -9
  27. data/lib/acfs/resource/attributes/dict.rb +37 -0
  28. data/lib/acfs/resource/attributes/float.rb +11 -5
  29. data/lib/acfs/resource/attributes/integer.rb +7 -5
  30. data/lib/acfs/resource/attributes/list.rb +13 -6
  31. data/lib/acfs/resource/attributes/string.rb +3 -5
  32. data/lib/acfs/resource/attributes/uuid.rb +8 -17
  33. data/lib/acfs/resource/loadable.rb +0 -1
  34. data/lib/acfs/resource/locatable.rb +0 -4
  35. data/lib/acfs/resource/operational.rb +0 -2
  36. data/lib/acfs/resource/persistence.rb +17 -17
  37. data/lib/acfs/resource/query_methods.rb +3 -5
  38. data/lib/acfs/resource/service.rb +0 -2
  39. data/lib/acfs/resource/validation.rb +0 -2
  40. data/lib/acfs/response.rb +1 -2
  41. data/lib/acfs/response/formats.rb +1 -2
  42. data/lib/acfs/response/status.rb +3 -5
  43. data/lib/acfs/runner.rb +21 -11
  44. data/lib/acfs/service.rb +4 -6
  45. data/lib/acfs/service/middleware.rb +20 -30
  46. data/lib/acfs/service/middleware/stack.rb +63 -0
  47. data/lib/acfs/singleton_resource.rb +0 -2
  48. data/lib/acfs/stub.rb +30 -21
  49. data/lib/acfs/util.rb +1 -1
  50. data/lib/acfs/version.rb +4 -2
  51. data/spec/acfs/adapter/typhoeus_spec.rb +12 -4
  52. data/spec/acfs/collection_spec.rb +45 -33
  53. data/spec/acfs/configuration_spec.rb +9 -1
  54. data/spec/acfs/global_spec.rb +21 -3
  55. data/spec/acfs/middleware/json_spec.rb +63 -0
  56. data/spec/acfs/middleware/msgpack_spec.rb +60 -0
  57. data/spec/acfs/operation_spec.rb +10 -0
  58. data/spec/acfs/request/callbacks_spec.rb +8 -8
  59. data/spec/acfs/request_spec.rb +5 -5
  60. data/spec/acfs/resource/attributes/boolean_spec.rb +40 -9
  61. data/spec/acfs/resource/attributes/date_time_spec.rb +29 -35
  62. data/spec/acfs/resource/attributes/dict_spec.rb +75 -0
  63. data/spec/acfs/resource/attributes/float_spec.rb +48 -9
  64. data/spec/acfs/resource/attributes/integer_spec.rb +34 -0
  65. data/spec/acfs/resource/attributes/list_spec.rb +43 -19
  66. data/spec/acfs/resource/attributes/uuid_spec.rb +31 -54
  67. data/spec/acfs/resource/attributes_spec.rb +17 -31
  68. data/spec/acfs/resource/locatable_spec.rb +2 -2
  69. data/spec/acfs/resource/persistance_spec.rb +65 -34
  70. data/spec/acfs/resource/query_methods_spec.rb +87 -87
  71. data/spec/acfs/resource/validation_spec.rb +4 -5
  72. data/spec/acfs/response/formats_spec.rb +1 -1
  73. data/spec/acfs/response/status_spec.rb +1 -1
  74. data/spec/acfs/runner_spec.rb +28 -3
  75. data/spec/acfs/service/middleware_spec.rb +4 -20
  76. data/spec/acfs/service_spec.rb +3 -5
  77. data/spec/acfs/singleton_resource_spec.rb +1 -2
  78. data/spec/acfs/stub_spec.rb +137 -22
  79. data/spec/acfs_spec.rb +22 -19
  80. data/spec/spec_helper.rb +2 -1
  81. data/spec/support/service.rb +10 -6
  82. data/spec/support/shared/find_callbacks.rb +7 -7
  83. metadata +37 -30
  84. data/lib/acfs/middleware/json_decoder.rb +0 -16
  85. data/lib/acfs/middleware/json_encoder.rb +0 -20
  86. data/lib/acfs/middleware/msgpack_decoder.rb +0 -26
  87. data/lib/acfs/middleware/msgpack_encoder.rb +0 -19
  88. data/spec/acfs/middleware/json_decoder_spec.rb +0 -45
  89. data/spec/acfs/middleware/msgpack_decoder_spec.rb +0 -36
@@ -9,8 +9,7 @@ describe Acfs::SingletonResource do
9
9
  .to_return response id: 1
10
10
  end
11
11
 
12
- let(:action) { ->(cb){ model.find(&cb) } }
12
+ let(:action) { ->(cb) { model.find(&cb) } }
13
13
  it_should_behave_like 'a query method with multi-callback support'
14
14
  end
15
-
16
15
  end
@@ -14,7 +14,7 @@ describe Acfs::Stub do
14
14
 
15
15
  describe '#called?' do
16
16
  context 'without specified number' do
17
- let!(:operation) { Acfs::Stub.resource MyUser, :read, with: { id: 1 }, return: { id: 1, name: 'John Smith', age: 32 } }
17
+ let!(:operation) { Acfs::Stub.resource MyUser, :read, with: {id: 1}, return: {id: 1, name: 'John Smith', age: 32} }
18
18
 
19
19
  it 'should allow to test if stub was called' do
20
20
  MyUser.find 1
@@ -38,8 +38,8 @@ describe Acfs::Stub do
38
38
  describe '.resource' do
39
39
  context 'with ambiguous stubs' do
40
40
  before do
41
- Acfs::Stub.resource MyUser, :read, with: { id: 1 }, return: { id: 1, name: 'John Smith', age: 32 }
42
- Acfs::Stub.resource MyUser, :read, with: { id: 1 }, raise: :not_found
41
+ Acfs::Stub.resource MyUser, :read, with: {id: 1}, return: {id: 1, name: 'John Smith', age: 32}
42
+ Acfs::Stub.resource MyUser, :read, with: {id: 1}, raise: :not_found
43
43
  end
44
44
 
45
45
  it 'should raise error' do
@@ -51,9 +51,9 @@ describe Acfs::Stub do
51
51
 
52
52
  context 'with read action' do
53
53
  before do
54
- Acfs::Stub.resource MyUser, :read, with: { id: 1 }, return: { id: 1, name: 'John Smith', age: 32 }
55
- Acfs::Stub.resource MyUser, :read, with: { id: 2 }, raise: SpecialCustomError
56
- Acfs::Stub.resource MyUser, :read, with: { id: 3 }, raise: :not_found
54
+ Acfs::Stub.resource MyUser, :read, with: {id: 1}, return: {id: 1, name: 'John Smith', age: 32}
55
+ Acfs::Stub.resource MyUser, :read, with: {id: 2}, raise: SpecialCustomError
56
+ Acfs::Stub.resource MyUser, :read, with: {id: 3}, raise: :not_found
57
57
  end
58
58
 
59
59
  it 'should allow to stub resource reads' do
@@ -81,8 +81,8 @@ describe Acfs::Stub do
81
81
 
82
82
  context 'with type parameter' do
83
83
  before do
84
- Acfs::Stub.resource Computer, :read, with: { id: 1 }, return: { id: 1, type: 'PC' }
85
- Acfs::Stub.resource Computer, :read, with: { id: 2 }, return: { id: 2, type: 'Mac' }
84
+ Acfs::Stub.resource Computer, :read, with: {id: 1}, return: {id: 1, type: 'PC'}
85
+ Acfs::Stub.resource Computer, :read, with: {id: 2}, return: {id: 2, type: 'Mac'}
86
86
  end
87
87
 
88
88
  it 'should create inherited type' do
@@ -99,8 +99,8 @@ describe Acfs::Stub do
99
99
 
100
100
  context 'with create action' do
101
101
  before do
102
- Acfs::Stub.resource Session, :create, with: { ident: 'john@exmaple.org', password: 's3cr3t' }, return: { id: 'longhash', user: 1 }
103
- Acfs::Stub.resource Session, :create, with: lambda { |op| op.data[:ident] == 'john@exmaple.org' && op.data[:password] == 'wrong' }, raise: 422
102
+ Acfs::Stub.resource Session, :create, with: {ident: 'john@exmaple.org', password: 's3cr3t'}, return: {id: 'longhash', user: 1}
103
+ Acfs::Stub.resource Session, :create, with: ->(op) { op.data[:ident] == 'john@exmaple.org' && op.data[:password] == 'wrong' }, raise: 422
104
104
  end
105
105
 
106
106
  it 'should allow stub resource creation' do
@@ -111,16 +111,16 @@ describe Acfs::Stub do
111
111
  end
112
112
 
113
113
  it 'should allow to raise error' do
114
- expect {
114
+ expect do
115
115
  Session.create! ident: 'john@exmaple.org', password: 'wrong'
116
- }.to raise_error(::Acfs::InvalidResource)
116
+ end.to raise_error(::Acfs::InvalidResource)
117
117
  end
118
118
  end
119
119
 
120
120
  context 'with list action' do
121
121
  before do
122
122
  Acfs::Stub.resource MyUser, :list,
123
- return: [{ id: 1, name: 'John Smith', age: 32 }, { id: 2, name: 'Anon', age: 12 }]
123
+ return: [{id: 1, name: 'John Smith', age: 32}, {id: 2, name: 'Anon', age: 12}]
124
124
  end
125
125
 
126
126
  it 'should return collection' do
@@ -158,23 +158,35 @@ describe Acfs::Stub do
158
158
  context 'with header' do
159
159
  before do
160
160
  Acfs::Stub.resource Comment, :list,
161
- return: [{ id: 1, text: 'Foo' }, { id: 2, text: 'Bar' }],
162
- headers: headers
161
+ return: [{id: 1, text: 'Foo'}, {id: 2, text: 'Bar'}],
162
+ headers: headers
163
163
  end
164
164
 
165
165
  let!(:comments) { Comment.all }
166
- let(:headers) { {'X-Total-Pages' => '2'} }
166
+ let(:headers) do
167
+ {
168
+ 'X-Total-Pages' => '2',
169
+ 'X-Total-Count' => '10'
170
+ }
171
+ end
167
172
  subject { Acfs.run; comments }
168
173
 
169
174
  its(:total_pages) { should eq 2 }
175
+ its(:total_count) { should eq 10 }
170
176
  end
171
177
  end
172
178
 
173
179
  context 'with update action' do
174
180
  before do
175
- Acfs::Stub.resource MyUser, :read, with: { id: 1 }, return: { id: 1, name: 'John Smith', age: 32 }
176
- Acfs::Stub.resource MyUser, :update, with: { id: 1, name: 'John Smith', age: 22 }, return: { id: 1, name: 'John Smith', age: 23 }
177
- Acfs::Stub.resource MyUser, :update, with: { id: 1, name: 'John Smith', age: 0 }, raise: 422
181
+ Acfs::Stub.resource MyUser, :read, with: {id: 1}, return: {id: 1, name: 'John Smith', age: 32}
182
+ Acfs::Stub.resource MyUser, :update, with: {id: 1, name: 'John Smith', age: 22}, return: {id: 1, name: 'John Smith', age: 23}
183
+ Acfs::Stub.resource MyUser, :update, with: {id: 1, name: 'John Smith', age: 0}, raise: 422
184
+ end
185
+
186
+ let!(:update_stub) do
187
+ Acfs::Stub.resource MyUser, :update,
188
+ with: {id: 1, name: 'Jane Smith'},
189
+ return: ->(op) { Hash[op.data.map {|k, v| [k, v.to_s.upcase] }] }
178
190
  end
179
191
 
180
192
  it 'should allow stub resource update' do
@@ -194,9 +206,43 @@ describe Acfs::Stub do
194
206
  user.age = 0
195
207
  user.save
196
208
 
197
- expect {
209
+ expect do
198
210
  user.save!
199
- }.to raise_error(::Acfs::InvalidResource)
211
+ end.to raise_error(::Acfs::InvalidResource)
212
+ end
213
+
214
+ it 'should match partial :with' do
215
+ user = MyUser.find 1
216
+ Acfs.run
217
+
218
+ user.age = 5
219
+ user.name = 'Jane Smith'
220
+ user.save!
221
+
222
+ expect(update_stub).to be_called
223
+ end
224
+
225
+ it 'should process response body' do
226
+ user = MyUser.find 1
227
+ Acfs.run
228
+
229
+ user.age = 5
230
+ user.name = 'Jane Smith'
231
+ user.save!
232
+
233
+ expect(user.name).to eq 'JANE SMITH'
234
+ end
235
+ end
236
+
237
+ context 'with create action' do
238
+ before do
239
+ Acfs::Stub.resource MyUser, :create, with: {name: 'John Smith', age: 0}, raise: 422
240
+ end
241
+
242
+ it 'should allow to raise error' do
243
+ expect do
244
+ MyUser.create! name: 'John Smith', age: 0
245
+ end.to raise_error(::Acfs::InvalidResource)
200
246
  end
201
247
  end
202
248
  end
@@ -205,7 +251,7 @@ describe Acfs::Stub do
205
251
  context 'when enabled' do
206
252
  before do
207
253
  Acfs::Stub.allow_requests = true
208
- stub_request(:get, 'http://users.example.org/users/2').to_return response({ id: 2, name: 'John', age: 26 })
254
+ stub_request(:get, 'http://users.example.org/users/2').to_return response(id: 2, name: 'John', age: 26)
209
255
  end
210
256
 
211
257
  it 'should allow real requests' do
@@ -225,4 +271,73 @@ describe Acfs::Stub do
225
271
  end
226
272
  end
227
273
  end
274
+
275
+ describe 'accept?' do
276
+ subject { stub.accept?(op) }
277
+
278
+ context 'with a match in params' do
279
+ let(:op) do
280
+ double('operation').tap do |op|
281
+ allow(op).to receive(:full_params).and_return(id: 1337, blub: 'abc')
282
+ allow(op).to receive(:data).and_return({})
283
+ end
284
+ end
285
+
286
+ let(:stub) { Acfs::Stub.resource MyUser, :read, with: {id: 1337} }
287
+
288
+ it { is_expected.to be true }
289
+ end
290
+
291
+ context 'with a match in data' do
292
+ let(:op) do
293
+ double('operation').tap do |op|
294
+ allow(op).to receive(:full_params).and_return({})
295
+ allow(op).to receive(:data).and_return(id: 1337, blub: 'abc')
296
+ end
297
+ end
298
+
299
+ let(:stub) { Acfs::Stub.resource MyUser, :read, with: {id: 1337} }
300
+
301
+ it { is_expected.to be true }
302
+ end
303
+
304
+ context 'with no match in params nor data' do
305
+ let(:op) do
306
+ double('operation').tap do |op|
307
+ allow(op).to receive(:full_params).and_return(id: 1337)
308
+ allow(op).to receive(:data).and_return({})
309
+ end
310
+ end
311
+
312
+ let(:stub) { Acfs::Stub.resource MyUser, :read, with: {abc: '123'} }
313
+
314
+ it { is_expected.to be false }
315
+ end
316
+
317
+ context 'with a wrong match' do
318
+ let(:op) do
319
+ double('operation').tap do |op|
320
+ allow(op).to receive(:full_params).and_return(id: 1337, blub: 'abc')
321
+ allow(op).to receive(:data).and_return({})
322
+ end
323
+ end
324
+
325
+ let(:stub) { Acfs::Stub.resource MyUser, :read, with: {id: 1337, blub: '123'} }
326
+
327
+ it { is_expected.to be false }
328
+ end
329
+
330
+ context 'with a missing match' do
331
+ let(:op) do
332
+ double('operation').tap do |op|
333
+ allow(op).to receive(:full_params).and_return(id: 1337, blub: 'abc')
334
+ allow(op).to receive(:data).and_return({})
335
+ end
336
+ end
337
+
338
+ let(:stub) { Acfs::Stub.resource MyUser, :read, with: {id: 1337, answer: 42} }
339
+
340
+ it { is_expected.to be false }
341
+ end
342
+ end
228
343
  end
@@ -1,19 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'Acfs' do
4
-
5
4
  before do
6
- stub_request(:get, 'http://users.example.org/users').to_return response([{ id: 1, name: 'Anon', age: 12 }, { id: 2, name: 'John', age: 26 }])
7
- stub_request(:get, 'http://users.example.org/users/2').to_return response({ id: 2, name: 'John', age: 26 })
8
- stub_request(:get, 'http://users.example.org/users/3').to_return response({ id: 3, name: 'Miraculix', age: 122 })
9
- stub_request(:get, 'http://users.example.org/users/100').to_return response({ id:100, name: 'Jimmy', age: 45 })
10
- stub_request(:get, 'http://users.example.org/users/2/friends').to_return response([{ id: 1, name: 'Anon', age: 12 }])
11
- stub_request(:get, 'http://comments.example.org/comments?user=2').to_return response([{ id: 1, text: 'Comment #1' }, { id: 2, text: 'Comment #2' }])
5
+ stub_request(:get, 'http://users.example.org/users').to_return response([{id: 1, name: 'Anon', age: 12}, {id: 2, name: 'John', age: 26}])
6
+ stub_request(:get, 'http://users.example.org/users/2').to_return response(id: 2, name: 'John', age: 26)
7
+ stub_request(:get, 'http://users.example.org/users/3').to_return response(id: 3, name: 'Miraculix', age: 122)
8
+ stub_request(:get, 'http://users.example.org/users/100').to_return response(id: 100, name: 'Jimmy', age: 45)
9
+ stub_request(:get, 'http://users.example.org/users/2/friends').to_return response([{id: 1, name: 'Anon', age: 12}])
10
+ stub_request(:get, 'http://comments.example.org/comments?user=2').to_return response([{id: 1, text: 'Comment #1'}, {id: 2, text: 'Comment #2'}])
12
11
  end
13
12
 
14
13
  it 'should update single resource synchronously' do
15
14
  stub = stub_request(:put, 'http://users.example.org/users/2')
16
- .to_return { |request| { body: request.body, headers: {'Content-Type' => request.headers['Content-Type']}} }
15
+ .to_return {|request| {body: request.body, headers: {'Content-Type' => request.headers['Content-Type']}} }
17
16
 
18
17
  @user = MyUser.find 2
19
18
  Acfs.run
@@ -24,7 +23,7 @@ describe 'Acfs' do
24
23
  @user.name = 'Johnny'
25
24
 
26
25
  expect(@user).to be_changed
27
- expect(@user).to_not be_persisted
26
+ expect(@user).to be_persisted
28
27
 
29
28
  @user.save
30
29
 
@@ -34,7 +33,7 @@ describe 'Acfs' do
34
33
  end
35
34
 
36
35
  it 'should create a single resource synchronously' do
37
- stub = stub_request(:post, 'http://users.example.org/sessions').to_return response({id: 'sessionhash', user: 1})
36
+ stub = stub_request(:post, 'http://users.example.org/sessions').to_return response(id: 'sessionhash', user: 1)
38
37
 
39
38
  session = Session.create ident: 'Anon'
40
39
 
@@ -58,11 +57,11 @@ describe 'Acfs' do
58
57
 
59
58
  describe 'singleton' do
60
59
  before do
61
- stub_request(:get, 'http://users.example.org/singles?user_id=5').to_return response({ score: 250, user_id: 5 })
60
+ stub_request(:get, 'http://users.example.org/singles?user_id=5').to_return response(score: 250, user_id: 5)
62
61
  end
63
62
 
64
63
  it 'should create a singleton resource' do
65
- stub = stub_request(:post, 'http://users.example.org/singles').to_return response({ score: 250, user_id: 5 })
64
+ stub = stub_request(:post, 'http://users.example.org/singles').to_return response(score: 250, user_id: 5)
66
65
 
67
66
  @single = Single.new user_id: 5, score: 250
68
67
  expect(@single.new?).to eq true
@@ -83,10 +82,12 @@ describe 'Acfs' do
83
82
  end
84
83
 
85
84
  it 'should update singleton resource' do
86
- stub = stub_request(:put, 'http://users.example.org/singles').to_return { |request| {
85
+ stub = stub_request(:put, 'http://users.example.org/singles').to_return do |request|
86
+ {
87
87
  body: request.body,
88
- headers: { 'Content-Type' => request.headers['Content-Type'] }
89
- } }
88
+ headers: {'Content-Type' => request.headers['Content-Type']}
89
+ }
90
+ end
90
91
 
91
92
  @single = Single.find user_id: 5
92
93
  Acfs.run
@@ -102,10 +103,12 @@ describe 'Acfs' do
102
103
  end
103
104
 
104
105
  it 'should delete singleton resource' do
105
- stub = stub_request(:delete, 'http://users.example.org/singles').to_return { |request| {
106
+ stub = stub_request(:delete, 'http://users.example.org/singles').to_return do |request|
107
+ {
106
108
  body: request.body,
107
- headers: { 'Content-Type' => request.headers['Content-Type'] }
108
- } }
109
+ headers: {'Content-Type' => request.headers['Content-Type']}
110
+ }
111
+ end
109
112
 
110
113
  @single = Single.find user_id: 5
111
114
  Acfs.run
@@ -118,7 +121,7 @@ describe 'Acfs' do
118
121
  end
119
122
 
120
123
  it 'should raise error when calling `all\'' do
121
- expect{ Single.all }.to raise_error ::Acfs::UnsupportedOperation
124
+ expect { Single.all }.to raise_error ::Acfs::UnsupportedOperation
122
125
  end
123
126
  end
124
127
 
@@ -12,8 +12,9 @@ require 'bundler'
12
12
  Bundler.require
13
13
 
14
14
  require 'acfs'
15
+ require 'webmock/rspec'
15
16
 
16
- Dir[File.expand_path('spec/support/**/*.rb')].each {|f| require f}
17
+ Dir[File.expand_path('spec/support/**/*.rb')].each {|f| require f }
17
18
 
18
19
  RSpec.configure do |config|
19
20
  # ## Mock Framework
@@ -33,7 +33,6 @@ class Profile < Acfs::SingletonResource
33
33
  end
34
34
 
35
35
  class Customer < MyUser
36
-
37
36
  end
38
37
 
39
38
  class MyUserWithValidations < MyUser
@@ -43,9 +42,9 @@ end
43
42
 
44
43
  class Session < Acfs::Resource
45
44
  service UserService, path: {
46
- list: 'users/:user_id/sessions',
47
- delete: 'users/:user_id/sessions/del/:id',
48
- update: nil
45
+ list: 'users/:user_id/sessions',
46
+ delete: 'users/:user_id/sessions/del/:id',
47
+ update: nil
49
48
  }
50
49
 
51
50
  attribute :id, :string
@@ -72,11 +71,9 @@ class Computer < Acfs::Resource
72
71
  end
73
72
 
74
73
  class PC < Computer
75
-
76
74
  end
77
75
 
78
76
  class Mac < Computer
79
-
80
77
  end
81
78
 
82
79
  class Single < Acfs::SingletonResource
@@ -85,3 +82,10 @@ class Single < Acfs::SingletonResource
85
82
  attribute :score, :integer
86
83
  attribute :user_id, :integer
87
84
  end
85
+
86
+ class PathArguments < Acfs::Resource
87
+ service UserService, path: ':required_arg/users/'
88
+
89
+ attribute :id, :integer
90
+ attribute :required_arg, :string
91
+ end
@@ -2,23 +2,23 @@ shared_examples 'a query method with multi-callback support' do
2
2
  let(:cb) { Proc.new }
3
3
 
4
4
  it 'should invoke callback' do
5
- expect { |cb|
5
+ expect do |cb|
6
6
  action.call cb
7
7
  Acfs.run
8
- }.to yield_with_args
8
+ end.to yield_with_args
9
9
  end
10
10
 
11
11
  it 'should invoke multiple callbacks' do
12
- expect { |cb|
12
+ expect do |cb|
13
13
  object = action.call cb
14
14
  Acfs.add_callback object, &cb
15
15
  Acfs.run
16
- }.to yield_control.exactly(2).times
16
+ end.to yield_control.exactly(2).times
17
17
  end
18
18
 
19
19
  describe 'callback' do
20
20
  it 'should be invoked with resource' do
21
- proc = Proc.new { }
21
+ proc = proc {}
22
22
  expect(proc).to receive(:call) do |res|
23
23
  expect(res).to equal @object
24
24
  expect(res).to be_loaded
@@ -29,8 +29,8 @@ shared_examples 'a query method with multi-callback support' do
29
29
  end
30
30
 
31
31
  it 'should invoke multiple callback with loaded resource' do
32
- proc1 = Proc.new { }
33
- proc2 = Proc.new { }
32
+ proc1 = proc {}
33
+ proc2 = proc {}
34
34
  expect(proc1).to receive(:call) do |user|
35
35
  expect(user).to equal @object
36
36
  expect(user).to be_loaded
metadata CHANGED
@@ -1,111 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acfs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.dev.1.b305
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Graichen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-07 00:00:00.000000000 Z
11
+ date: 2016-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '3.1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.1'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: actionpack
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '3.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: multi_json
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: typhoeus
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ! '>='
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.6.5
75
+ version: '1.0'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ! '>='
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.6.5
82
+ version: '1.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rack
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ! '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ! '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: bundler
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '1.3'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '1.3'
111
111
  description: API Client For Services
@@ -129,12 +129,11 @@ files:
129
129
  - lib/acfs/global.rb
130
130
  - lib/acfs/location.rb
131
131
  - lib/acfs/middleware/base.rb
132
- - lib/acfs/middleware/json_decoder.rb
133
- - lib/acfs/middleware/json_encoder.rb
132
+ - lib/acfs/middleware/json.rb
134
133
  - lib/acfs/middleware/logger.rb
135
- - lib/acfs/middleware/msgpack_decoder.rb
136
- - lib/acfs/middleware/msgpack_encoder.rb
134
+ - lib/acfs/middleware/msgpack.rb
137
135
  - lib/acfs/middleware/print.rb
136
+ - lib/acfs/middleware/serializer.rb
138
137
  - lib/acfs/operation.rb
139
138
  - lib/acfs/request.rb
140
139
  - lib/acfs/request/callbacks.rb
@@ -143,6 +142,7 @@ files:
143
142
  - lib/acfs/resource/attributes/base.rb
144
143
  - lib/acfs/resource/attributes/boolean.rb
145
144
  - lib/acfs/resource/attributes/date_time.rb
145
+ - lib/acfs/resource/attributes/dict.rb
146
146
  - lib/acfs/resource/attributes/float.rb
147
147
  - lib/acfs/resource/attributes/integer.rb
148
148
  - lib/acfs/resource/attributes/list.rb
@@ -164,6 +164,7 @@ files:
164
164
  - lib/acfs/runner.rb
165
165
  - lib/acfs/service.rb
166
166
  - lib/acfs/service/middleware.rb
167
+ - lib/acfs/service/middleware/stack.rb
167
168
  - lib/acfs/singleton_resource.rb
168
169
  - lib/acfs/stub.rb
169
170
  - lib/acfs/util.rb
@@ -173,13 +174,16 @@ files:
173
174
  - spec/acfs/collection_spec.rb
174
175
  - spec/acfs/configuration_spec.rb
175
176
  - spec/acfs/global_spec.rb
176
- - spec/acfs/middleware/json_decoder_spec.rb
177
- - spec/acfs/middleware/msgpack_decoder_spec.rb
177
+ - spec/acfs/middleware/json_spec.rb
178
+ - spec/acfs/middleware/msgpack_spec.rb
179
+ - spec/acfs/operation_spec.rb
178
180
  - spec/acfs/request/callbacks_spec.rb
179
181
  - spec/acfs/request_spec.rb
180
182
  - spec/acfs/resource/attributes/boolean_spec.rb
181
183
  - spec/acfs/resource/attributes/date_time_spec.rb
184
+ - spec/acfs/resource/attributes/dict_spec.rb
182
185
  - spec/acfs/resource/attributes/float_spec.rb
186
+ - spec/acfs/resource/attributes/integer_spec.rb
183
187
  - spec/acfs/resource/attributes/list_spec.rb
184
188
  - spec/acfs/resource/attributes/uuid_spec.rb
185
189
  - spec/acfs/resource/attributes_spec.rb
@@ -214,17 +218,17 @@ require_paths:
214
218
  - lib
215
219
  required_ruby_version: !ruby/object:Gem::Requirement
216
220
  requirements:
217
- - - ! '>='
221
+ - - ">="
218
222
  - !ruby/object:Gem::Version
219
223
  version: '0'
220
224
  required_rubygems_version: !ruby/object:Gem::Requirement
221
225
  requirements:
222
- - - ! '>'
226
+ - - ">="
223
227
  - !ruby/object:Gem::Version
224
- version: 1.3.1
228
+ version: '0'
225
229
  requirements: []
226
230
  rubyforge_project:
227
- rubygems_version: 2.2.2
231
+ rubygems_version: 2.5.1
228
232
  signing_key:
229
233
  specification_version: 4
230
234
  summary: An abstract API base client for service oriented application.
@@ -233,13 +237,16 @@ test_files:
233
237
  - spec/acfs/collection_spec.rb
234
238
  - spec/acfs/configuration_spec.rb
235
239
  - spec/acfs/global_spec.rb
236
- - spec/acfs/middleware/json_decoder_spec.rb
237
- - spec/acfs/middleware/msgpack_decoder_spec.rb
240
+ - spec/acfs/middleware/json_spec.rb
241
+ - spec/acfs/middleware/msgpack_spec.rb
242
+ - spec/acfs/operation_spec.rb
238
243
  - spec/acfs/request/callbacks_spec.rb
239
244
  - spec/acfs/request_spec.rb
240
245
  - spec/acfs/resource/attributes/boolean_spec.rb
241
246
  - spec/acfs/resource/attributes/date_time_spec.rb
247
+ - spec/acfs/resource/attributes/dict_spec.rb
242
248
  - spec/acfs/resource/attributes/float_spec.rb
249
+ - spec/acfs/resource/attributes/integer_spec.rb
243
250
  - spec/acfs/resource/attributes/list_spec.rb
244
251
  - spec/acfs/resource/attributes/uuid_spec.rb
245
252
  - spec/acfs/resource/attributes_spec.rb