azeroth 0.6.5 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -30,6 +30,97 @@ describe Azeroth::RequestHandler::Update do
30
30
  end
31
31
  end
32
32
 
33
+ context 'with before_save block option' do
34
+ it_behaves_like 'a request handler' do
35
+ let(:block) do
36
+ value = 10
37
+ proc do
38
+ document.reference = "X-MAGIC-#{value}"
39
+ end
40
+ end
41
+
42
+ let(:options_hash) do
43
+ {
44
+ before_save: block
45
+ }
46
+ end
47
+
48
+ let(:expected_resource) { document }
49
+
50
+ let(:extra_params) do
51
+ {
52
+ id: document.id,
53
+ document: {
54
+ name: 'New Name'
55
+ }
56
+ }
57
+ end
58
+
59
+ let(:expected_json) do
60
+ {
61
+ 'name' => 'New Name',
62
+ 'reference' => 'X-MAGIC-10'
63
+ }
64
+ end
65
+
66
+ it 'updates the values given by request' do
67
+ expect { handler.process }
68
+ .to change { document.reload.name }
69
+ .from(document.name)
70
+ .to('New Name')
71
+ end
72
+
73
+ it 'updates the values done by before_save' do
74
+ expect { handler.process }
75
+ .to change { document.reload.reference }
76
+ .from(nil)
77
+ .to('X-MAGIC-10')
78
+ end
79
+ end
80
+ end
81
+
82
+ context 'with before_save symbol option' do
83
+ it_behaves_like 'a request handler' do
84
+ let(:options_hash) do
85
+ {
86
+ before_save: :add_magic_reference
87
+ }
88
+ end
89
+
90
+ let(:expected_resource) { document }
91
+
92
+ let(:extra_params) do
93
+ {
94
+ id: document.id,
95
+ document: {
96
+ name: 'New Name'
97
+ }
98
+ }
99
+ end
100
+
101
+ let(:expected_json) do
102
+ {
103
+ 'name' => 'New Name',
104
+ 'reference' => 'X-MAGIC-15'
105
+ }
106
+ end
107
+
108
+ it 'updates the values given by request' do
109
+ expect { handler.process }
110
+ .to change { document.reload.name }
111
+ .from(document.name)
112
+ .to('New Name')
113
+ end
114
+
115
+ it 'updates the values done by before_save' do
116
+ expect { handler.process }
117
+ .to change { document.reload.reference }
118
+ .from(nil)
119
+ .to('X-MAGIC-15')
120
+ end
121
+ end
122
+ end
123
+
33
124
  context 'when payload is invalid' do
34
125
  it_behaves_like 'a request handler',
35
126
  status: :unprocessable_entity do
@@ -4,7 +4,9 @@ require 'spec_helper'
4
4
 
5
5
  describe Azeroth::RequestHandler do
6
6
  describe '#process' do
7
- subject(:handler) { handler_class.new(controller, model) }
7
+ subject(:handler) do
8
+ handler_class.new(controller, model, options)
9
+ end
8
10
 
9
11
  let(:controller) { controller_class.new }
10
12
  let(:params) { ActionController::Parameters.new(parameters) }
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class RequestHandlerController < ActionController::Base
4
+ private
5
+
4
6
  def document_params
5
7
  params.require(:document).permit(:name)
6
8
  end
@@ -10,6 +12,20 @@ class RequestHandlerController < ActionController::Base
10
12
  end
11
13
 
12
14
  def document
13
- documents.find(params.require(:id))
15
+ @document ||= documents.find(params.require(:id))
16
+ end
17
+
18
+ def add_magic_reference
19
+ document.reference = 'X-MAGIC-15'
20
+ end
21
+
22
+ def add_magic_reference_and_trigger
23
+ document.update(reference: 'X-MAGIC-15')
24
+ Worker.perform(document.id)
25
+ end
26
+
27
+ def build_magic_document
28
+ documents.where(reference: 'X-MAGIC-15')
29
+ .build(document_params)
14
30
  end
15
31
  end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Worker
4
+ def self.perform(*args); end
5
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ factory :pokemon, class: '::Pokemon' do
5
+ name { 'Bulbasaur' }
6
+ pokemon_master
7
+ end
8
+ end
@@ -1,12 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  shared_examples 'a request handler' do |status: :ok|
4
- subject(:handler) { described_class.new(controller, model) }
4
+ subject(:handler) do
5
+ described_class.new(controller, model, options)
6
+ end
5
7
 
6
8
  let(:controller) { controller_class.new }
7
9
  let(:params) { ActionController::Parameters.new(parameters) }
8
10
  let(:model) { Azeroth::Model.new(:document, options) }
9
- let(:options) { Azeroth::Options.new }
11
+ let(:options) { Azeroth::Options.new(options_hash) }
12
+ let(:options_hash) { {} }
10
13
  let(:extra_params) { {} }
11
14
 
12
15
  let(:decorator) { Document::Decorator.new(expected_resource) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: azeroth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.5
4
+ version: 0.7.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darthjee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-10 00:00:00.000000000 Z
11
+ date: 2021-07-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 5.2.0
19
+ version: 5.2.x
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
- version: 5.2.0
26
+ version: 5.2.x
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: darthjee-active_ext
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,48 +38,62 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.3.2
41
+ - !ruby/object:Gem::Dependency
42
+ name: jace
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.0.3
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.0.3
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: sinclair
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: 1.6.4
61
+ version: 1.6.7
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: 1.6.4
68
+ version: 1.6.7
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: actionpack
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - '='
73
+ - - "~>"
60
74
  - !ruby/object:Gem::Version
61
- version: 5.2.4.2
75
+ version: 5.2.x
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - '='
80
+ - - "~>"
67
81
  - !ruby/object:Gem::Version
68
- version: 5.2.4.2
82
+ version: 5.2.x
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: activerecord
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - '='
87
+ - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: 5.2.4.2
89
+ version: 5.2.x
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - '='
94
+ - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: 5.2.4.2
96
+ version: 5.2.x
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: bundler
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +128,14 @@ dependencies:
114
128
  requirements:
115
129
  - - '='
116
130
  - !ruby/object:Gem::Version
117
- version: 1.10.9
131
+ version: 1.11.4
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - '='
123
137
  - !ruby/object:Gem::Version
124
- version: 1.10.9
138
+ version: 1.11.4
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: pry
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -154,16 +168,16 @@ dependencies:
154
168
  name: rails
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
- - - '='
171
+ - - "~>"
158
172
  - !ruby/object:Gem::Version
159
- version: 5.2.4.2
173
+ version: 5.2.x
160
174
  type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
- - - '='
178
+ - - "~>"
165
179
  - !ruby/object:Gem::Version
166
- version: 5.2.4.2
180
+ version: 5.2.x
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: rails-controller-testing
169
183
  requirement: !ruby/object:Gem::Requirement
@@ -184,28 +198,28 @@ dependencies:
184
198
  requirements:
185
199
  - - '='
186
200
  - !ruby/object:Gem::Version
187
- version: 13.0.1
201
+ version: 13.0.3
188
202
  type: :development
189
203
  prerelease: false
190
204
  version_requirements: !ruby/object:Gem::Requirement
191
205
  requirements:
192
206
  - - '='
193
207
  - !ruby/object:Gem::Version
194
- version: 13.0.1
208
+ version: 13.0.3
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: reek
197
211
  requirement: !ruby/object:Gem::Requirement
198
212
  requirements:
199
213
  - - '='
200
214
  - !ruby/object:Gem::Version
201
- version: 5.6.0
215
+ version: 6.0.3
202
216
  type: :development
203
217
  prerelease: false
204
218
  version_requirements: !ruby/object:Gem::Requirement
205
219
  requirements:
206
220
  - - '='
207
221
  - !ruby/object:Gem::Version
208
- version: 5.6.0
222
+ version: 6.0.3
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: rspec
211
225
  requirement: !ruby/object:Gem::Requirement
@@ -226,28 +240,28 @@ dependencies:
226
240
  requirements:
227
241
  - - '='
228
242
  - !ruby/object:Gem::Version
229
- version: 3.9.1
243
+ version: 3.9.3
230
244
  type: :development
231
245
  prerelease: false
232
246
  version_requirements: !ruby/object:Gem::Requirement
233
247
  requirements:
234
248
  - - '='
235
249
  - !ruby/object:Gem::Version
236
- version: 3.9.1
250
+ version: 3.9.3
237
251
  - !ruby/object:Gem::Dependency
238
252
  name: rspec-expectations
239
253
  requirement: !ruby/object:Gem::Requirement
240
254
  requirements:
241
255
  - - '='
242
256
  - !ruby/object:Gem::Version
243
- version: 3.9.1
257
+ version: 3.9.4
244
258
  type: :development
245
259
  prerelease: false
246
260
  version_requirements: !ruby/object:Gem::Requirement
247
261
  requirements:
248
262
  - - '='
249
263
  - !ruby/object:Gem::Version
250
- version: 3.9.1
264
+ version: 3.9.4
251
265
  - !ruby/object:Gem::Dependency
252
266
  name: rspec-mocks
253
267
  requirement: !ruby/object:Gem::Requirement
@@ -282,14 +296,14 @@ dependencies:
282
296
  requirements:
283
297
  - - '='
284
298
  - !ruby/object:Gem::Version
285
- version: 3.9.2
299
+ version: 3.9.4
286
300
  type: :development
287
301
  prerelease: false
288
302
  version_requirements: !ruby/object:Gem::Requirement
289
303
  requirements:
290
304
  - - '='
291
305
  - !ruby/object:Gem::Version
292
- version: 3.9.2
306
+ version: 3.9.4
293
307
  - !ruby/object:Gem::Dependency
294
308
  name: rubocop
295
309
  requirement: !ruby/object:Gem::Requirement
@@ -324,14 +338,14 @@ dependencies:
324
338
  requirements:
325
339
  - - '='
326
340
  - !ruby/object:Gem::Version
327
- version: 4.4.1
341
+ version: 4.6.1
328
342
  type: :development
329
343
  prerelease: false
330
344
  version_requirements: !ruby/object:Gem::Requirement
331
345
  requirements:
332
346
  - - '='
333
347
  - !ruby/object:Gem::Version
334
- version: 4.4.1
348
+ version: 4.6.1
335
349
  - !ruby/object:Gem::Dependency
336
350
  name: simplecov
337
351
  requirement: !ruby/object:Gem::Requirement
@@ -366,14 +380,14 @@ dependencies:
366
380
  requirements:
367
381
  - - '='
368
382
  - !ruby/object:Gem::Version
369
- version: 0.9.24
383
+ version: 0.9.26
370
384
  type: :development
371
385
  prerelease: false
372
386
  version_requirements: !ruby/object:Gem::Requirement
373
387
  requirements:
374
388
  - - '='
375
389
  - !ruby/object:Gem::Version
376
- version: 0.9.24
390
+ version: 0.9.26
377
391
  - !ruby/object:Gem::Dependency
378
392
  name: yardstick
379
393
  requirement: !ruby/object:Gem::Requirement
@@ -438,6 +452,8 @@ files:
438
452
  - spec/controllers/documents_controller_spec.rb
439
453
  - spec/controllers/documents_with_error_controller_spec.rb
440
454
  - spec/controllers/index_documents_controller_spec.rb
455
+ - spec/controllers/pokemon_masters_controller_spec.rb
456
+ - spec/controllers/pokemons_controller_spec.rb
441
457
  - spec/dummy/.ruby-version
442
458
  - spec/dummy/Rakefile
443
459
  - spec/dummy/app/assets/config/manifest.js
@@ -454,6 +470,8 @@ files:
454
470
  - spec/dummy/app/controllers/documents_with_error_controller.rb
455
471
  - spec/dummy/app/controllers/games_controller.rb
456
472
  - spec/dummy/app/controllers/index_documents_controller.rb
473
+ - spec/dummy/app/controllers/pokemon_masters_controller.rb
474
+ - spec/dummy/app/controllers/pokemons_controller.rb
457
475
  - spec/dummy/app/controllers/publishers_controller.rb
458
476
  - spec/dummy/app/helpers/application_helper.rb
459
477
  - spec/dummy/app/jobs/application_job.rb
@@ -556,10 +574,12 @@ files:
556
574
  - spec/support/app/controllers/request_handler_controller.rb
557
575
  - spec/support/app/controllers/resource_builder_controller.rb
558
576
  - spec/support/app/controllers/resource_route_builder_controller.rb
577
+ - spec/support/app/workers/worker.rb
559
578
  - spec/support/factories/document.rb
560
579
  - spec/support/factories/dummy_model.rb
561
580
  - spec/support/factories/factory.rb
562
581
  - spec/support/factories/game.rb
582
+ - spec/support/factories/pokemon.rb
563
583
  - spec/support/factories/pokemon_master.rb
564
584
  - spec/support/factories/product.rb
565
585
  - spec/support/factories/publisher.rb
@@ -594,6 +614,8 @@ test_files:
594
614
  - spec/controllers/documents_controller_spec.rb
595
615
  - spec/controllers/documents_with_error_controller_spec.rb
596
616
  - spec/controllers/index_documents_controller_spec.rb
617
+ - spec/controllers/pokemon_masters_controller_spec.rb
618
+ - spec/controllers/pokemons_controller_spec.rb
597
619
  - spec/dummy/.ruby-version
598
620
  - spec/dummy/Rakefile
599
621
  - spec/dummy/app/assets/config/manifest.js
@@ -610,6 +632,8 @@ test_files:
610
632
  - spec/dummy/app/controllers/documents_with_error_controller.rb
611
633
  - spec/dummy/app/controllers/games_controller.rb
612
634
  - spec/dummy/app/controllers/index_documents_controller.rb
635
+ - spec/dummy/app/controllers/pokemon_masters_controller.rb
636
+ - spec/dummy/app/controllers/pokemons_controller.rb
613
637
  - spec/dummy/app/controllers/publishers_controller.rb
614
638
  - spec/dummy/app/helpers/application_helper.rb
615
639
  - spec/dummy/app/jobs/application_job.rb
@@ -712,10 +736,12 @@ test_files:
712
736
  - spec/support/app/controllers/request_handler_controller.rb
713
737
  - spec/support/app/controllers/resource_builder_controller.rb
714
738
  - spec/support/app/controllers/resource_route_builder_controller.rb
739
+ - spec/support/app/workers/worker.rb
715
740
  - spec/support/factories/document.rb
716
741
  - spec/support/factories/dummy_model.rb
717
742
  - spec/support/factories/factory.rb
718
743
  - spec/support/factories/game.rb
744
+ - spec/support/factories/pokemon.rb
719
745
  - spec/support/factories/pokemon_master.rb
720
746
  - spec/support/factories/product.rb
721
747
  - spec/support/factories/publisher.rb