acfs 1.0.0.dev.1.b305 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -14,7 +14,7 @@ describe Acfs::Resource::QueryMethods do
14
14
  name: 'Clare Customer', age: 24
15
15
  end
16
16
 
17
- let(:action) { lambda{|cb = nil| model.find(1, &cb) } }
17
+ let(:action) { ->(cb = nil) { model.find(1, &cb) } }
18
18
  it_behaves_like 'a query method with multi-callback support'
19
19
 
20
20
  it 'should load a single remote resource' do
@@ -44,7 +44,7 @@ describe Acfs::Resource::QueryMethods do
44
44
  context 'with 404 response' do
45
45
  before do
46
46
  stub_request(:get, 'http://users.example.org/users/1')
47
- .to_return response({error: 'not found'}, status: 404)
47
+ .to_return response({error: 'not found'}, {status: 404})
48
48
  end
49
49
 
50
50
  it 'should raise a NotFound error' do
@@ -95,7 +95,7 @@ describe Acfs::Resource::QueryMethods do
95
95
  end
96
96
 
97
97
  it 'should invoke callback after all models are loaded' do
98
- block = proc{}
98
+ block = proc {}
99
99
  expect(block).to receive(:call) do |users|
100
100
  expect(users).to equal @users
101
101
  expect(users.size).to be == 2
@@ -107,8 +107,8 @@ describe Acfs::Resource::QueryMethods do
107
107
  end
108
108
 
109
109
  it 'should invoke multiple callback after all models are loaded' do
110
- proc1 = proc{}
111
- proc2 = proc{}
110
+ proc1 = proc {}
111
+ proc2 = proc {}
112
112
  expect(proc1).to receive(:call) do |users|
113
113
  expect(users).to equal @users
114
114
  expect(users.size).to be == 2
@@ -137,7 +137,7 @@ describe Acfs::Resource::QueryMethods do
137
137
  context 'with one 404 response' do
138
138
  before do
139
139
  stub_request(:get, 'http://users.example.org/users/1')
140
- .to_return response({error: 'not found'}, status: 404)
140
+ .to_return response({error: 'not found'}, {status: 404})
141
141
  end
142
142
 
143
143
  it 'should raise resource not found error' do
@@ -162,8 +162,8 @@ describe Acfs::Resource::QueryMethods do
162
162
  end
163
163
 
164
164
  it 'should invoke multiple callback after all models are loaded' do
165
- proc1 = proc{}
166
- proc2 = proc{}
165
+ proc1 = proc {}
166
+ proc2 = proc {}
167
167
  expect(proc1).to receive(:call) do |computers|
168
168
  expect(computers).to equal @computers
169
169
  expect(computers.size).to be == 3
@@ -274,7 +274,7 @@ describe Acfs::Resource::QueryMethods do
274
274
  end
275
275
 
276
276
  it 'should invoke callback after model is loaded' do
277
- block = proc{}
277
+ block = proc {}
278
278
 
279
279
  expect(block).to receive(:call) do |user|
280
280
  expect(user).to eql @user.__getobj__
@@ -287,8 +287,8 @@ describe Acfs::Resource::QueryMethods do
287
287
  end
288
288
 
289
289
  it 'should invoke multiple callbacks after model is loaded' do
290
- proc1 = proc{}
291
- proc2 = proc{}
290
+ proc1 = proc {}
291
+ proc2 = proc {}
292
292
 
293
293
  expect(proc1).to receive(:call) do |user|
294
294
  expect(user).to eql @user.__getobj__
@@ -340,7 +340,7 @@ describe Acfs::Resource::QueryMethods do
340
340
  it { should be_nil }
341
341
 
342
342
  it 'should invoke callback after model is loaded' do
343
- block = proc{}
343
+ block = proc {}
344
344
 
345
345
  expect(block).to receive(:call) do |user|
346
346
  expect(user).to eql @user.__getobj__
@@ -352,8 +352,8 @@ describe Acfs::Resource::QueryMethods do
352
352
  end
353
353
 
354
354
  it 'should invoke multiple callbacks after model is loaded' do
355
- proc1 = proc{}
356
- proc2 = proc{}
355
+ proc1 = proc {}
356
+ proc2 = proc {}
357
357
 
358
358
  expect(proc1).to receive(:call) do |user|
359
359
  expect(user).to eql @user.__getobj__
@@ -393,7 +393,7 @@ describe Acfs::Resource::QueryMethods do
393
393
  end
394
394
 
395
395
  it 'should not invoke callback after model could not be loaded' do
396
- block = proc{}
396
+ block = proc {}
397
397
 
398
398
  expect(block).not_to receive(:call)
399
399
 
@@ -406,30 +406,30 @@ describe Acfs::Resource::QueryMethods do
406
406
  describe '#each_page' do
407
407
  context 'without parameters' do
408
408
  before do
409
- stub_request(:get, 'http://users.example.org/users').
410
- to_return response([{id: 1, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
411
- headers: {
412
- 'X-Total-Pages' => '4',
413
- 'Link' => '<http://users.example.org/users?page=2>; rel="next"'
414
- })
415
- stub_request(:get, 'http://users.example.org/users?page=2').
416
- to_return response([{id: 2, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
417
- headers: {
418
- 'X-Total-Pages' => '4',
419
- 'Link' => '<http://users.example.org/users?page=3>; rel="next"'
420
- })
421
- stub_request(:get, 'http://users.example.org/users?page=3').
422
- to_return response([{id: 3, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
423
- headers: {
424
- 'X-Total-Pages' => '4',
425
- 'Link' => '<http://users.example.org/users?page=4>; rel="next"'
426
- })
427
- stub_request(:get, 'http://users.example.org/users?page=4').
428
- to_return response([{id: 4, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
429
- headers: {
430
- 'X-Total-Pages' => '4',
431
- 'Link' => ''
432
- })
409
+ stub_request(:get, 'http://users.example.org/users')
410
+ .to_return response([{id: 1, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
411
+ headers: {
412
+ 'X-Total-Pages' => '4',
413
+ 'Link' => '<http://users.example.org/users?page=2>; rel="next"'
414
+ })
415
+ stub_request(:get, 'http://users.example.org/users?page=2')
416
+ .to_return response([{id: 2, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
417
+ headers: {
418
+ 'X-Total-Pages' => '4',
419
+ 'Link' => '<http://users.example.org/users?page=3>; rel="next"'
420
+ })
421
+ stub_request(:get, 'http://users.example.org/users?page=3')
422
+ .to_return response([{id: 3, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
423
+ headers: {
424
+ 'X-Total-Pages' => '4',
425
+ 'Link' => '<http://users.example.org/users?page=4>; rel="next"'
426
+ })
427
+ stub_request(:get, 'http://users.example.org/users?page=4')
428
+ .to_return response([{id: 4, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
429
+ headers: {
430
+ 'X-Total-Pages' => '4',
431
+ 'Link' => ''
432
+ })
433
433
  end
434
434
 
435
435
  it 'should iterate all pages' do
@@ -448,30 +448,30 @@ describe Acfs::Resource::QueryMethods do
448
448
 
449
449
  context 'with parameters' do
450
450
  before do
451
- stub_request(:get, 'http://users.example.org/users?param=bla').
452
- to_return response([{id: 1, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
453
- headers: {
454
- 'X-Total-Pages' => '4',
455
- 'Link' => '<http://users.example.org/users?where=fuu&page=2>; rel="next"'
456
- })
457
- stub_request(:get, 'http://users.example.org/users?where=fuu&page=2').
458
- to_return response([{id: 2, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
459
- headers: {
460
- 'X-Total-Pages' => '4',
461
- 'Link' => '<http://users.example.org/users?page=3>; rel="next"'
462
- })
463
- stub_request(:get, 'http://users.example.org/users?page=3').
464
- to_return response([{id: 3, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
465
- headers: {
466
- 'X-Total-Pages' => '4',
467
- 'Link' => '<http://users.example.org/users?page=4>; rel="next"'
468
- })
469
- stub_request(:get, 'http://users.example.org/users?page=4').
470
- to_return response([{id: 4, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
471
- headers: {
472
- 'X-Total-Pages' => '4',
473
- 'Link' => ''
474
- })
451
+ stub_request(:get, 'http://users.example.org/users?param=bla')
452
+ .to_return response([{id: 1, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
453
+ headers: {
454
+ 'X-Total-Pages' => '4',
455
+ 'Link' => '<http://users.example.org/users?where=fuu&page=2>; rel="next"'
456
+ })
457
+ stub_request(:get, 'http://users.example.org/users?where=fuu&page=2')
458
+ .to_return response([{id: 2, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
459
+ headers: {
460
+ 'X-Total-Pages' => '4',
461
+ 'Link' => '<http://users.example.org/users?page=3>; rel="next"'
462
+ })
463
+ stub_request(:get, 'http://users.example.org/users?page=3')
464
+ .to_return response([{id: 3, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
465
+ headers: {
466
+ 'X-Total-Pages' => '4',
467
+ 'Link' => '<http://users.example.org/users?page=4>; rel="next"'
468
+ })
469
+ stub_request(:get, 'http://users.example.org/users?page=4')
470
+ .to_return response([{id: 4, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
471
+ headers: {
472
+ 'X-Total-Pages' => '4',
473
+ 'Link' => ''
474
+ })
475
475
  end
476
476
 
477
477
  it 'should call first page with params and follow relations' do
@@ -492,30 +492,30 @@ describe Acfs::Resource::QueryMethods do
492
492
  describe '#each_item' do
493
493
  context 'without parameters' do
494
494
  before do
495
- stub_request(:get, 'http://users.example.org/users').
496
- to_return response([{id: 1, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
497
- headers: {
498
- 'X-Total-Pages' => '4',
499
- 'Link' => '<http://users.example.org/users?page=2>; rel="next"'
500
- })
501
- stub_request(:get, 'http://users.example.org/users?page=2').
502
- to_return response([{id: 2, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
503
- headers: {
504
- 'X-Total-Pages' => '4',
505
- 'Link' => '<http://users.example.org/users?page=3>; rel="next"'
506
- })
507
- stub_request(:get, 'http://users.example.org/users?page=3').
508
- to_return response([{id: 3, name: 'Anno', age: 1604, born_at: 'Santa Maria'},{id: 4, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
509
- headers: {
510
- 'X-Total-Pages' => '4',
511
- 'Link' => '<http://users.example.org/users?page=4>; rel="next"'
512
- })
513
- stub_request(:get, 'http://users.example.org/users?page=4').
514
- to_return response([{id: 5, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
515
- headers: {
516
- 'X-Total-Pages' => '4',
517
- 'Link' => ''
518
- })
495
+ stub_request(:get, 'http://users.example.org/users')
496
+ .to_return response([{id: 1, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
497
+ headers: {
498
+ 'X-Total-Pages' => '4',
499
+ 'Link' => '<http://users.example.org/users?page=2>; rel="next"'
500
+ })
501
+ stub_request(:get, 'http://users.example.org/users?page=2')
502
+ .to_return response([{id: 2, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
503
+ headers: {
504
+ 'X-Total-Pages' => '4',
505
+ 'Link' => '<http://users.example.org/users?page=3>; rel="next"'
506
+ })
507
+ stub_request(:get, 'http://users.example.org/users?page=3')
508
+ .to_return response([{id: 3, name: 'Anno', age: 1604, born_at: 'Santa Maria'}, {id: 4, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
509
+ headers: {
510
+ 'X-Total-Pages' => '4',
511
+ 'Link' => '<http://users.example.org/users?page=4>; rel="next"'
512
+ })
513
+ stub_request(:get, 'http://users.example.org/users?page=4')
514
+ .to_return response([{id: 5, name: 'Anno', age: 1604, born_at: 'Santa Maria'}],
515
+ headers: {
516
+ 'X-Total-Pages' => '4',
517
+ 'Link' => ''
518
+ })
519
519
  end
520
520
 
521
521
  it 'should iterate all pages' do
@@ -23,7 +23,7 @@ describe Acfs::Resource::Validation do
23
23
  after { Acfs::Stub.disable }
24
24
 
25
25
  before do
26
- Acfs::Stub.resource MyUser, :create, with: {}, return: {errors: {name: ['can\'t be blank']}}, raise: 422
26
+ Acfs::Stub.resource MyUser, :create, return: {errors: {name: ['can\'t be blank']}}, raise: 422
27
27
  end
28
28
 
29
29
  let(:params) { {} }
@@ -34,7 +34,7 @@ describe Acfs::Resource::Validation do
34
34
 
35
35
  it 'should not override errors' do
36
36
  subject.valid?
37
- expect(subject.errors.to_hash).to eq({name: ['can\'t be blank']})
37
+ expect(subject.errors.to_hash).to eq(name: ['can\'t be blank'])
38
38
  end
39
39
  end
40
40
  end
@@ -73,7 +73,7 @@ describe Acfs::Resource::Validation do
73
73
  let(:resource) { MyUser.create params }
74
74
  subject { resource }
75
75
 
76
- its(:errors) { expect(subject.errors.to_hash).to eq({name: ['can\'t be blank']}) }
76
+ its(:errors) { expect(subject.errors.to_hash).to eq(name: ['can\'t be blank']) }
77
77
  end
78
78
  end
79
79
 
@@ -96,7 +96,7 @@ describe Acfs::Resource::Validation do
96
96
 
97
97
  context 'on changed resource' do
98
98
  before { model.loaded! }
99
- let(:model) { super().tap { |m| m.id = 1 } }
99
+ let(:model) { super().tap {|m| m.id = 1 } }
100
100
 
101
101
  it 'should validate with `save` context' do
102
102
  expect(model).to receive(:valid?).with(:save).and_call_original
@@ -106,6 +106,5 @@ describe Acfs::Resource::Validation do
106
106
  end
107
107
 
108
108
  describe 'validates with context' do
109
-
110
109
  end
111
110
  end
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe Acfs::Response::Formats do
4
4
  let(:status) { 200 }
5
5
  let(:mime_type) { 'application/unknown' }
6
- let(:headers) { { 'Content-Type' => mime_type } }
6
+ let(:headers) { {'Content-Type' => mime_type} }
7
7
  let(:request) { Acfs::Request.new 'fubar' }
8
8
  let(:body) { nil }
9
9
  let(:response) { Acfs::Response.new request, status: status, headers: headers, body: body }
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe Acfs::Response::Status do
4
4
  let(:status) { 200 }
5
5
  let(:mime_type) { 'application/unknown' }
6
- let(:headers) { { 'Content-Type' => mime_type } }
6
+ let(:headers) { {'Content-Type' => mime_type} }
7
7
  let(:request) { Acfs::Request.new 'fubar' }
8
8
  let(:body) { nil }
9
9
  let(:response) { Acfs::Response.new request, status: status, headers: headers, body: body }
@@ -1,7 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  class NullAdapter < Acfs::Adapter::Base
4
-
5
4
  # Start processing queued requests.
6
5
  #
7
6
  def start
@@ -37,6 +36,7 @@ describe ::Acfs::Runner do
37
36
  let(:adapter) { ::NullAdapter.new }
38
37
  let(:runner) { ::Acfs::Runner.new adapter }
39
38
  let(:collector) { NotificationCollector.new }
39
+ let(:collector2) { NotificationCollector.new }
40
40
 
41
41
  after do
42
42
  ::ActiveSupport::Notifications.notifier = \
@@ -45,13 +45,15 @@ describe ::Acfs::Runner do
45
45
 
46
46
  describe '#instrumentation' do
47
47
  before do
48
- ::ActiveSupport::Notifications.subscribe /^acfs\.runner/, collector
48
+ ::ActiveSupport::Notifications.subscribe(/^acfs\.runner/, collector)
49
+ ::ActiveSupport::Notifications.subscribe(/^acfs\.operation/, collector2)
49
50
  end
50
51
 
51
52
  describe '#process' do
52
53
  it 'should trigger event' do
53
54
  runner.process ::Acfs::Operation.new MyUser, :read, params: {id: 0}
54
55
  expect(collector.events).to have(1).items
56
+ expect(collector2.events).to have(1).items
55
57
  end
56
58
  end
57
59
 
@@ -59,14 +61,37 @@ describe ::Acfs::Runner do
59
61
  it 'should trigger event' do
60
62
  runner.run ::Acfs::Operation.new MyUser, :read, params: {id: 0}
61
63
  expect(collector.events).to have(1).items
64
+ expect(collector2.events).to have(0).items
62
65
  end
63
66
  end
64
67
 
65
68
  describe '#enqueue' do
66
69
  it 'should trigger event' do
67
- runner.run ::Acfs::Operation.new MyUser, :read, params: {id: 0}
70
+ runner.enqueue ::Acfs::Operation.new MyUser, :read, params: {id: 0}
68
71
  expect(collector.events).to have(1).items
72
+ expect(collector2.events).to have(0).items
69
73
  end
70
74
  end
71
75
  end
76
+
77
+ describe '#run' do
78
+ before do
79
+ expect_any_instance_of(UserService).to receive(:prepare).and_return nil
80
+ end
81
+ it 'it should not do requests when a middleware aborted' do
82
+ expect(adapter).to_not receive :run
83
+ runner.run ::Acfs::Operation.new MyUser, :read, params: {id: 0}
84
+ end
85
+ end
86
+
87
+ describe '#enqueue' do
88
+ before do
89
+ expect_any_instance_of(UserService).to receive(:prepare).and_return nil
90
+ end
91
+ it 'it should not do requests when a middleware aborted' do
92
+ expect(adapter).to_not receive :queue
93
+ runner.enqueue ::Acfs::Operation.new MyUser, :read, params: {id: 0}
94
+ runner.start
95
+ end
96
+ end
72
97
  end
@@ -6,44 +6,28 @@ end
6
6
  describe Acfs::Service::Middleware do
7
7
  let(:srv_class) { Class.new(Acfs::Service) }
8
8
  let(:options) { {} }
9
- let(:service) { srv_class.new options }
10
9
  let(:middleware) { TestMiddleware }
11
10
 
12
11
  describe '.use' do
13
- let(:options) { { abc: 'cde' } }
12
+ let(:options) { {abc: 'cde'} }
14
13
 
15
14
  it 'should add middleware to list' do
16
15
  srv_class.use middleware
17
16
 
18
- expect(srv_class.instance_variable_get(:@middlewares)).to include(middleware)
17
+ expect(srv_class.middleware).to include(middleware)
19
18
  end
20
19
 
21
20
  it 'should add middleware to stack' do
22
21
  srv_class.use middleware
23
22
 
24
- expect(srv_class.middleware).to be_a(middleware)
23
+ expect(srv_class.middleware.build(1)).to be_a(middleware)
25
24
  end
26
25
 
27
26
  it 'should instantiate middleware object' do
28
27
  expect(middleware).to receive(:new).with(anything, options)
29
28
 
30
29
  srv_class.use middleware, options
31
- end
32
- end
33
-
34
- describe '.clear' do
35
- before { srv_class.use middleware }
36
-
37
- it 'should clear middleware list' do
38
- srv_class.clear
39
-
40
- expect(srv_class.instance_variable_get(:@middlewares)).to be_empty
41
- end
42
-
43
- it 'should reset middleware stack' do
44
- srv_class.clear
45
-
46
- expect(srv_class.instance_variable_get(:@middleware)).to be_nil
30
+ srv_class.middleware.build
47
31
  end
48
32
  end
49
33
  end
@@ -10,7 +10,7 @@ describe Acfs::Service do
10
10
  end
11
11
 
12
12
  describe '#initialize' do
13
- let(:options) { { path: 'abc', key: 'value' } }
13
+ let(:options) { {path: 'abc', key: 'value'} }
14
14
 
15
15
  it 'should set options' do
16
16
  expect(service.options).to eq(options)
@@ -19,14 +19,14 @@ describe Acfs::Service do
19
19
 
20
20
  describe '#location' do
21
21
  let(:resource) { Class.new }
22
- before { allow(resource).to receive(:location_default_path, &proc{|a, p| p}) }
22
+ before { allow(resource).to receive(:location_default_path, &proc{|_a, p| p}) }
23
23
 
24
24
  it 'should extract resource path name from given class' do
25
25
  expect(service.location(resource).to_s).to eq('/classes')
26
26
  end
27
27
 
28
28
  context 'with path options' do
29
- let(:options) { { path: 'abc' } }
29
+ let(:options) { {path: 'abc'} }
30
30
 
31
31
  it 'should have custom resource path' do
32
32
  expect(service.location(resource).to_s).to eq('/abc')
@@ -35,13 +35,11 @@ describe Acfs::Service do
35
35
  end
36
36
 
37
37
  describe '.base_url' do
38
-
39
38
  before do
40
39
  Acfs::Configuration.current.locate :test, 'http://abc.de/api/v1'
41
40
  end
42
41
 
43
42
  it 'should return configured URI for service' do
44
-
45
43
  expect(srv_class.base_url).to eq('http://abc.de/api/v1')
46
44
  end
47
45
  end