azeroth 0.6.4 → 0.7.3

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,15 @@ 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 build_magic_document
23
+ documents.where(reference: 'X-MAGIC-15')
24
+ .build(document_params)
14
25
  end
15
26
  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
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ factory :pokemon_master, class: '::PokemonMaster' do
5
+ sequence(:first_name) { |n| "Ash-#{n}" }
6
+ sequence(:last_name) { |n| "Ketchum-#{n}" }
7
+ age { 10 }
8
+ end
9
+ 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.4
4
+ version: 0.7.3
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-06 00:00:00.000000000 Z
11
+ date: 2021-04-19 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.5
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.5
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.3
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.3
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
@@ -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
@@ -560,6 +578,8 @@ files:
560
578
  - spec/support/factories/dummy_model.rb
561
579
  - spec/support/factories/factory.rb
562
580
  - spec/support/factories/game.rb
581
+ - spec/support/factories/pokemon.rb
582
+ - spec/support/factories/pokemon_master.rb
563
583
  - spec/support/factories/product.rb
564
584
  - spec/support/factories/publisher.rb
565
585
  - spec/support/factories/user.rb
@@ -593,6 +613,8 @@ test_files:
593
613
  - spec/controllers/documents_controller_spec.rb
594
614
  - spec/controllers/documents_with_error_controller_spec.rb
595
615
  - spec/controllers/index_documents_controller_spec.rb
616
+ - spec/controllers/pokemon_masters_controller_spec.rb
617
+ - spec/controllers/pokemons_controller_spec.rb
596
618
  - spec/dummy/.ruby-version
597
619
  - spec/dummy/Rakefile
598
620
  - spec/dummy/app/assets/config/manifest.js
@@ -609,6 +631,8 @@ test_files:
609
631
  - spec/dummy/app/controllers/documents_with_error_controller.rb
610
632
  - spec/dummy/app/controllers/games_controller.rb
611
633
  - spec/dummy/app/controllers/index_documents_controller.rb
634
+ - spec/dummy/app/controllers/pokemon_masters_controller.rb
635
+ - spec/dummy/app/controllers/pokemons_controller.rb
612
636
  - spec/dummy/app/controllers/publishers_controller.rb
613
637
  - spec/dummy/app/helpers/application_helper.rb
614
638
  - spec/dummy/app/jobs/application_job.rb
@@ -715,6 +739,8 @@ test_files:
715
739
  - spec/support/factories/dummy_model.rb
716
740
  - spec/support/factories/factory.rb
717
741
  - spec/support/factories/game.rb
742
+ - spec/support/factories/pokemon.rb
743
+ - spec/support/factories/pokemon_master.rb
718
744
  - spec/support/factories/product.rb
719
745
  - spec/support/factories/publisher.rb
720
746
  - spec/support/factories/user.rb