smash_the_state 1.4.2 → 1.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f0527df75d9fad254bc32ca2abece0d9a220ee86cb729dbbe87522c29a4150e
4
- data.tar.gz: 48ba7b4e6405244a8dbd65d4b3aa6ff9474d15d4283e34d8078e60e23b8be50b
3
+ metadata.gz: 591b5f213e895130ff25cf2bc2638275d6f89a054abbe01c0fb55ff5c6f3cc84
4
+ data.tar.gz: 249752c9f3aa7a7efea1adf1dcc4af85bfe135235bf0d07b6961fb3a5eca2a80
5
5
  SHA512:
6
- metadata.gz: 32815be847a37111eae15e282aab36384914fb99b17e3dad1c27b4bc8269b91fe448ba5daacc59a1a9c3a200fd6ebf55a9a70895bf32d76b8313fd543a93351d
7
- data.tar.gz: abf40fd2f6fa63d786d7433fc4fea4437058987bd2e46d44f6fad515b95d6b77da6252b46b80decd6598639b19e5897f57a8a8bf79cc403dd75b32f8f1d81a5f
6
+ metadata.gz: c74f691d3f1d7d9e6fe008e67d97b7da9cf24cef2d444a57744c1a4ee41f559358d39d6e1e74f5222f93c5d41c1eb9a53f3a61f9635a0cd522798fc77e0d2395
7
+ data.tar.gz: fbf4c5c27f114281a9db33f2d76d64a50f8f42594f1e2a5a84dfce2414893e1728dae5702e0ea8a65ccd4a3c82790ace05cba760e4634f08ab157e8b115c2e91
@@ -50,6 +50,11 @@ module SmashTheState
50
50
 
51
51
  def override_step(step_name, options = {}, &block)
52
52
  sequence.override_step(step_name, options, &block)
53
+
54
+ # also override the dry run step
55
+ return if dry_run_sequence.steps_for_name(step_name).length.zero?
56
+
57
+ dry_run_sequence.override_step(step_name, options, &block)
53
58
  end
54
59
 
55
60
  def error(*steps, &block)
@@ -131,6 +136,9 @@ module SmashTheState
131
136
 
132
137
  # also copy the state class over
133
138
  child_class.instance_variable_set(:@state_class, state_class && state_class.dup)
139
+
140
+ # also copy the dry run sequence
141
+ child_class.dry_run_sequence.steps.concat(dry_run_sequence.steps.map(&:dup))
134
142
  end
135
143
  end
136
144
  end
@@ -61,6 +61,7 @@ module SmashTheState
61
61
  sequence.side_effect_free
62
62
  end
63
63
 
64
+ seq.run_options[:dry] = true
64
65
  run_sequence(seq, params)
65
66
  end
66
67
  alias dry_call dry_run
@@ -32,7 +32,6 @@ module SmashTheState
32
32
  # return a copy without the steps that produce side-effects
33
33
  def side_effect_free
34
34
  dup.tap do |seq|
35
- seq.run_options[:dry] = true
36
35
  seq.instance_eval do
37
36
  @steps = seq.steps.select(&:side_effect_free?)
38
37
  end
@@ -1,3 +1,3 @@
1
1
  module SmashTheState
2
- VERSION = "1.4.2".freeze
2
+ VERSION = "1.4.3".freeze
3
3
  end
@@ -120,9 +120,9 @@ describe SmashTheState::Operation do
120
120
  step_name,
121
121
  step_options,
122
122
  &implementation
123
- ).and_return(token_result)
123
+ )
124
124
 
125
- expect(klass.override_step(step_name, step_options, &implementation)).to eq(token_result)
125
+ klass.override_step(step_name, step_options, &implementation)
126
126
  end
127
127
  end
128
128
 
@@ -147,6 +147,15 @@ describe SmashTheState::Operation do
147
147
  state.countup += "two"
148
148
  state
149
149
  end
150
+
151
+ dry_run_sequence do
152
+ step :one
153
+ step :two
154
+ step :three do |state|
155
+ state.countup += "blar"
156
+ state
157
+ end
158
+ end
150
159
  end
151
160
  end
152
161
  end
@@ -189,6 +198,10 @@ describe SmashTheState::Operation do
189
198
  too_large = child.call(countup: "")
190
199
  expect(too_large.errors[:countup]).to eq(["can't be blank"])
191
200
  end
201
+
202
+ it "populates the dry run sequence and honors overridden steps" do
203
+ expect(child.dry_run(countup: "zero").countup).to eq("zerooneoneandahalfblar")
204
+ end
192
205
  end
193
206
 
194
207
  describe "self#dynamic_schema" do
@@ -223,8 +236,8 @@ describe SmashTheState::Operation do
223
236
  describe "self#dry_run_sequence" do
224
237
  context "with a custom dry run sequence block" do
225
238
  before do
226
- klass.step :step_one do |state|
227
- state.name = state.name + " one"
239
+ klass.step :step_one do |state, _original_state, run_options|
240
+ state.name = state.name + " one " + run_options.to_json
228
241
  state
229
242
  end
230
243
 
@@ -253,16 +266,17 @@ describe SmashTheState::Operation do
253
266
  end
254
267
 
255
268
  it "provides a custom sequence for the dry run that " \
256
- "contains only side-effect free steps" do
269
+ "contains only side-effect free steps, and specifies " \
270
+ "whether the run is dry the run options" do
257
271
  result = klass.call(name: "Sam")
258
- expect(result.name).to eq("Sam one two three")
272
+ expect(result.name).to eq("Sam one {\"dry\":false} two three")
259
273
 
260
274
  expect(
261
275
  klass.dry_run_sequence.steps.all?(&:side_effect_free?)
262
276
  ).to eq(true)
263
277
 
264
278
  dry_result = klass.dry_run(name: "Sam")
265
- expect(dry_result.name).to eq("Sam one custom")
279
+ expect(dry_result.name).to eq("Sam one {\"dry\":true} custom")
266
280
  end
267
281
  end
268
282
  end
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.2
4
+ version: 1.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Connor
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-02 00:00:00.000000000 Z
11
+ date: 2021-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_model_attributes
@@ -83,8 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  requirements: []
86
- rubyforge_project:
87
- rubygems_version: 2.7.6.2
86
+ rubygems_version: 3.1.4
88
87
  signing_key:
89
88
  specification_version: 4
90
89
  summary: A useful utility for transforming state that provides step sequencing, middleware,