azeroth 0.6.5 → 0.7.4

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.
@@ -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