smash_the_state 1.4.3 → 1.4.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/lib/smash_the_state/operation/sequence.rb +15 -6
- data/lib/smash_the_state/version.rb +1 -1
- data/spec/unit/operation/sequence_spec.rb +28 -15
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9a4407b73af1d296ca49dc0e0d112e3fd4a497d37e66cc97026bcf75835e8d48
|
|
4
|
+
data.tar.gz: 19c36a89864c088ff0ff068768049dc68c798b57b3b074dd4cd4721f46386abb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3054575953e6e59b15a454609698b8346a6a2fab75ee578c94029b895e03568ed0af214db70cd283c7db0eb97954a41d752d8ed4b18898282940a01534969b49
|
|
7
|
+
data.tar.gz: b08cde0d76694574172be59467ffe790013aaa462664182345fb494d84976837102db57c60ba74e0753cda7c1b7925fa85adef77fae15e2eefecf5bb0903b41e
|
|
@@ -93,13 +93,20 @@ module SmashTheState
|
|
|
93
93
|
step.error_handler = block
|
|
94
94
|
end
|
|
95
95
|
|
|
96
|
-
# rubocop:disable Lint/ShadowedException
|
|
97
96
|
def middleware_class(state, original_state = nil)
|
|
98
|
-
middleware_class_block.call(state, original_state)
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
klass = middleware_class_block.call(state, original_state)
|
|
98
|
+
|
|
99
|
+
case klass
|
|
100
|
+
when Module, Class
|
|
101
|
+
klass
|
|
102
|
+
else
|
|
103
|
+
begin
|
|
104
|
+
klass.constantize if klass.respond_to?(:constantize)
|
|
105
|
+
rescue NameError
|
|
106
|
+
nil
|
|
107
|
+
end
|
|
108
|
+
end
|
|
101
109
|
end
|
|
102
|
-
# rubocop:enable Lint/ShadowedException
|
|
103
110
|
|
|
104
111
|
def add_middleware_step(step_name, options = {})
|
|
105
112
|
step = Operation::Step.new step_name, options do |state, original_state|
|
|
@@ -127,7 +134,9 @@ module SmashTheState
|
|
|
127
134
|
def make_original_state(state)
|
|
128
135
|
return dynamic_schema_step.implementation.call(state, state, run_options) if dynamic_schema?
|
|
129
136
|
|
|
130
|
-
state.
|
|
137
|
+
state.
|
|
138
|
+
dup.
|
|
139
|
+
freeze # don't allow any modifications to the original state
|
|
131
140
|
end
|
|
132
141
|
|
|
133
142
|
def run_steps(steps_to_run, state)
|
|
@@ -204,28 +204,40 @@ describe SmashTheState::Operation::Sequence do
|
|
|
204
204
|
end
|
|
205
205
|
|
|
206
206
|
context "with a middleware_class_block" do
|
|
207
|
-
|
|
208
|
-
|
|
207
|
+
context "that returns a string" do
|
|
208
|
+
it "runs the middleware_class_block, passes in the state, constantizes" do
|
|
209
|
+
expect(instance.middleware_class("String")).to eq(String)
|
|
210
|
+
end
|
|
209
211
|
end
|
|
210
|
-
end
|
|
211
212
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
213
|
+
context "that returns a constant" do
|
|
214
|
+
before do
|
|
215
|
+
instance.middleware_class_block = proc do |state|
|
|
216
|
+
state
|
|
217
|
+
end
|
|
218
|
+
end
|
|
217
219
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
+
context "that is a class" do
|
|
221
|
+
let!(:klass) { Class.new }
|
|
220
222
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
223
|
+
it "runs the middleware_class_block, passes in the state" do
|
|
224
|
+
expect(instance.middleware_class(klass)).to eq(klass)
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
context "that returns a module" do
|
|
229
|
+
let!(:modyule) { Module.new }
|
|
230
|
+
|
|
231
|
+
it "runs the middleware_class_block, passes in the state" do
|
|
232
|
+
expect(instance.middleware_class(modyule)).to eq(modyule)
|
|
233
|
+
end
|
|
224
234
|
end
|
|
225
235
|
end
|
|
236
|
+
end
|
|
226
237
|
|
|
238
|
+
context "with a NameError" do
|
|
227
239
|
it "returns nil" do
|
|
228
|
-
expect(instance.middleware_class(
|
|
240
|
+
expect(instance.middleware_class("Whazzat")).to eq(nil)
|
|
229
241
|
end
|
|
230
242
|
end
|
|
231
243
|
end
|
|
@@ -254,10 +266,11 @@ describe SmashTheState::Operation::Sequence do
|
|
|
254
266
|
instance.add_middleware_step :extra_step
|
|
255
267
|
end
|
|
256
268
|
|
|
257
|
-
it "block receives both the state and original state" do
|
|
269
|
+
it "block receives both the state and frozen original state" do
|
|
258
270
|
instance.middleware_class_block = proc do |state, original_state|
|
|
259
271
|
expect(state).to eq(baz: "bing")
|
|
260
272
|
expect(original_state).to eq(foo: "bar")
|
|
273
|
+
expect(original_state.frozen?).to eq(true)
|
|
261
274
|
end
|
|
262
275
|
|
|
263
276
|
instance.call(foo: "bar")
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: smash_the_state
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.4.
|
|
4
|
+
version: 1.4.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dan Connor
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-10-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: active_model_attributes
|
|
@@ -68,7 +68,7 @@ homepage: https://github.com/ibm-cloud/smash-the-state
|
|
|
68
68
|
licenses:
|
|
69
69
|
- Apache-2.0
|
|
70
70
|
metadata: {}
|
|
71
|
-
post_install_message:
|
|
71
|
+
post_install_message:
|
|
72
72
|
rdoc_options: []
|
|
73
73
|
require_paths:
|
|
74
74
|
- lib
|
|
@@ -84,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
84
84
|
version: '0'
|
|
85
85
|
requirements: []
|
|
86
86
|
rubygems_version: 3.1.4
|
|
87
|
-
signing_key:
|
|
87
|
+
signing_key:
|
|
88
88
|
specification_version: 4
|
|
89
89
|
summary: A useful utility for transforming state that provides step sequencing, middleware,
|
|
90
90
|
and validation.
|