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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +37 -2
- data/Dockerfile +2 -2
- data/README.md +56 -4
- data/azeroth.gemspec +14 -13
- data/lib/azeroth.rb +1 -0
- data/lib/azeroth/model.rb +3 -1
- data/lib/azeroth/options.rb +51 -1
- data/lib/azeroth/request_handler.rb +39 -2
- data/lib/azeroth/request_handler/create.rb +31 -5
- data/lib/azeroth/request_handler/update.rb +3 -3
- data/lib/azeroth/resourceable.rb +23 -0
- data/lib/azeroth/resourceable/class_methods.rb +31 -11
- data/lib/azeroth/routes_builder.rb +2 -1
- data/lib/azeroth/version.rb +1 -1
- data/spec/controllers/pokemon_masters_controller_spec.rb +56 -0
- data/spec/controllers/pokemons_controller_spec.rb +56 -0
- data/spec/dummy/app/controllers/pokemon_masters_controller.rb +9 -0
- data/spec/dummy/app/controllers/pokemons_controller.rb +27 -0
- data/spec/dummy/config/routes.rb +4 -0
- data/spec/lib/azeroth/request_handler/create_spec.rb +272 -0
- data/spec/lib/azeroth/request_handler/update_spec.rb +91 -0
- data/spec/lib/azeroth/request_handler_spec.rb +3 -1
- data/spec/support/app/controllers/request_handler_controller.rb +17 -1
- data/spec/support/app/workers/worker.rb +5 -0
- data/spec/support/factories/pokemon.rb +8 -0
- data/spec/support/shared_examples/request_handler.rb +5 -2
- metadata +60 -34
@@ -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)
|
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
|
@@ -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)
|
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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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:
|
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:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|