seam 0.0.14 → 0.0.15
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.
- data/lib/seam/flow.rb +7 -1
- data/lib/seam/version.rb +1 -1
- data/lib/seam/worker.rb +9 -2
- data/spec/seam/flow_spec.rb +32 -0
- data/spec/seam/worker_spec.rb +81 -2
- metadata +4 -4
data/lib/seam/flow.rb
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
module Seam
|
|
2
2
|
class Flow
|
|
3
3
|
|
|
4
|
+
attr_accessor :stamp_data_history
|
|
5
|
+
|
|
4
6
|
def initialize
|
|
5
7
|
@steps = []
|
|
8
|
+
@stamp_data_history = false
|
|
6
9
|
end
|
|
7
10
|
|
|
8
11
|
def method_missing(meth, *args, &blk)
|
|
@@ -23,7 +26,10 @@ module Seam
|
|
|
23
26
|
end
|
|
24
27
|
|
|
25
28
|
def to_hash
|
|
26
|
-
{
|
|
29
|
+
{
|
|
30
|
+
steps: self.steps.map { |x| x.to_hash },
|
|
31
|
+
stamp_data_history: @stamp_data_history
|
|
32
|
+
}
|
|
27
33
|
end
|
|
28
34
|
|
|
29
35
|
def steps
|
data/lib/seam/version.rb
CHANGED
data/lib/seam/worker.rb
CHANGED
|
@@ -98,7 +98,7 @@ module Seam
|
|
|
98
98
|
run = {
|
|
99
99
|
started_at: Time.now,
|
|
100
100
|
step: step,
|
|
101
|
-
data_before: effort.data.clone
|
|
101
|
+
data_before: stamping_the_history? ? effort.data.clone : nil
|
|
102
102
|
}
|
|
103
103
|
@current_run = HashWithIndifferentAccess.new run
|
|
104
104
|
end
|
|
@@ -120,12 +120,19 @@ module Seam
|
|
|
120
120
|
|
|
121
121
|
def stamp_the_new_history_record
|
|
122
122
|
history[:result] = @operation_to_execute
|
|
123
|
-
history[:data_after] = effort.data.clone
|
|
124
123
|
history[:stopped_at] = Time.now
|
|
125
124
|
|
|
125
|
+
if stamping_the_history?
|
|
126
|
+
history[:data_after] = effort.data.clone
|
|
127
|
+
end
|
|
128
|
+
|
|
126
129
|
effort.history << history
|
|
127
130
|
end
|
|
128
131
|
|
|
132
|
+
def stamping_the_history?
|
|
133
|
+
effort.flow['stamp_data_history']
|
|
134
|
+
end
|
|
135
|
+
|
|
129
136
|
def save_the_effort
|
|
130
137
|
effort.save
|
|
131
138
|
end
|
data/spec/seam/flow_spec.rb
CHANGED
|
@@ -129,4 +129,36 @@ describe "flow" do
|
|
|
129
129
|
end
|
|
130
130
|
end
|
|
131
131
|
end
|
|
132
|
+
|
|
133
|
+
describe "stamping history" do
|
|
134
|
+
describe "default" do
|
|
135
|
+
it "should should be false" do
|
|
136
|
+
flow = Seam::Flow.new
|
|
137
|
+
flow.stamp_data_history.must_equal false
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
describe "setting it to true" do
|
|
142
|
+
it "allow to be set to true" do
|
|
143
|
+
flow = Seam::Flow.new
|
|
144
|
+
flow.stamp_data_history = true
|
|
145
|
+
flow.stamp_data_history.must_equal true
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
describe "carrying the value through the serialization" do
|
|
150
|
+
|
|
151
|
+
it "should be able to persist false" do
|
|
152
|
+
flow = Seam::Flow.new
|
|
153
|
+
flow.stamp_data_history = false
|
|
154
|
+
flow.to_hash[:stamp_data_history].must_equal false
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it "should be able to persist true" do
|
|
158
|
+
flow = Seam::Flow.new
|
|
159
|
+
flow.stamp_data_history = true
|
|
160
|
+
flow.to_hash[:stamp_data_history].must_equal true
|
|
161
|
+
end
|
|
162
|
+
end
|
|
163
|
+
end
|
|
132
164
|
end
|
data/spec/seam/worker_spec.rb
CHANGED
|
@@ -4,6 +4,7 @@ describe "worker" do
|
|
|
4
4
|
|
|
5
5
|
before do
|
|
6
6
|
Seam::Persistence.destroy
|
|
7
|
+
@stamp_data_history = true
|
|
7
8
|
end
|
|
8
9
|
|
|
9
10
|
after do
|
|
@@ -260,6 +261,7 @@ describe "worker" do
|
|
|
260
261
|
let(:effort_creator) do
|
|
261
262
|
->() do
|
|
262
263
|
e = flow.start
|
|
264
|
+
flow.stamp_data_history = @stamp_data_history
|
|
263
265
|
Seam::Effort.find(e.id)
|
|
264
266
|
end
|
|
265
267
|
end
|
|
@@ -550,8 +552,6 @@ describe "worker" do
|
|
|
550
552
|
"started_at"=> Time.now,
|
|
551
553
|
"step"=>"wait_for_attempting_contact_stage",
|
|
552
554
|
"stopped_at" => Time.now,
|
|
553
|
-
"data_before" => { "first_name" => "DARREN" } ,
|
|
554
|
-
"data_after" => { "first_name" => "DARREN", "hit 1" => 1 }
|
|
555
555
|
} )
|
|
556
556
|
|
|
557
557
|
send_postcard_if_necessary_worker.execute_all
|
|
@@ -735,6 +735,85 @@ describe "worker" do
|
|
|
735
735
|
orange_worker.execute_all
|
|
736
736
|
end
|
|
737
737
|
end
|
|
738
|
+
|
|
739
|
+
describe "data history" do
|
|
740
|
+
describe "stamping the history" do
|
|
741
|
+
let(:effort) do
|
|
742
|
+
flow = Seam::Flow.new
|
|
743
|
+
flow.stamp_data_history = true
|
|
744
|
+
flow.apple
|
|
745
|
+
|
|
746
|
+
e = flow.start( { first_name: 'John' } )
|
|
747
|
+
Seam::Effort.find(e.id)
|
|
748
|
+
end
|
|
749
|
+
|
|
750
|
+
before do
|
|
751
|
+
Timecop.freeze Time.parse('3/4/2013')
|
|
752
|
+
effort.next_step.must_equal "apple"
|
|
753
|
+
|
|
754
|
+
apple_worker = Seam::Worker.new
|
|
755
|
+
apple_worker.handles(:apple)
|
|
756
|
+
def apple_worker.process
|
|
757
|
+
effort.data['something'] = 'else'
|
|
758
|
+
end
|
|
759
|
+
|
|
760
|
+
apple_worker.execute effort
|
|
761
|
+
end
|
|
762
|
+
|
|
763
|
+
it "should not update the next step" do
|
|
764
|
+
fresh_effort = Seam::Effort.find(effort.id)
|
|
765
|
+
fresh_effort.history.count.must_equal 1
|
|
766
|
+
end
|
|
767
|
+
|
|
768
|
+
it "should set the data_before history" do
|
|
769
|
+
fresh_effort = Seam::Effort.find(effort.id)
|
|
770
|
+
fresh_effort.history.first["data_before"].must_equal( { "first_name" => 'John' } )
|
|
771
|
+
end
|
|
772
|
+
|
|
773
|
+
it "should set the data_after history" do
|
|
774
|
+
fresh_effort = Seam::Effort.find(effort.id)
|
|
775
|
+
fresh_effort.history.first["data_after"].must_equal( { "first_name" => 'John', "something" => 'else' } )
|
|
776
|
+
end
|
|
777
|
+
end
|
|
778
|
+
|
|
779
|
+
describe "not stamping the history" do
|
|
780
|
+
let(:effort) do
|
|
781
|
+
flow = Seam::Flow.new
|
|
782
|
+
flow.stamp_data_history = false
|
|
783
|
+
flow.apple
|
|
784
|
+
|
|
785
|
+
e = flow.start( { first_name: 'John' } )
|
|
786
|
+
Seam::Effort.find(e.id)
|
|
787
|
+
end
|
|
788
|
+
|
|
789
|
+
before do
|
|
790
|
+
Timecop.freeze Time.parse('3/4/2013')
|
|
791
|
+
|
|
792
|
+
apple_worker = Seam::Worker.new
|
|
793
|
+
apple_worker.handles(:apple)
|
|
794
|
+
def apple_worker.process
|
|
795
|
+
effort.data['something'] = 'else'
|
|
796
|
+
end
|
|
797
|
+
|
|
798
|
+
apple_worker.execute effort
|
|
799
|
+
end
|
|
800
|
+
|
|
801
|
+
it "should not update the next step" do
|
|
802
|
+
fresh_effort = Seam::Effort.find(effort.id)
|
|
803
|
+
fresh_effort.history.count.must_equal 1
|
|
804
|
+
end
|
|
805
|
+
|
|
806
|
+
it "should set the data_before history" do
|
|
807
|
+
fresh_effort = Seam::Effort.find(effort.id)
|
|
808
|
+
fresh_effort.history.first["data_before"].nil?.must_equal true
|
|
809
|
+
end
|
|
810
|
+
|
|
811
|
+
it "should set the data_after history" do
|
|
812
|
+
fresh_effort = Seam::Effort.find(effort.id)
|
|
813
|
+
fresh_effort.history.first["data_after"].nil?.must_equal true
|
|
814
|
+
end
|
|
815
|
+
end
|
|
816
|
+
end
|
|
738
817
|
end
|
|
739
818
|
|
|
740
819
|
class IWillNotCallHandlesWorker < Seam::Worker
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: seam
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.15
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-
|
|
12
|
+
date: 2013-09-16 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: json
|
|
@@ -228,7 +228,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
228
228
|
version: '0'
|
|
229
229
|
segments:
|
|
230
230
|
- 0
|
|
231
|
-
hash:
|
|
231
|
+
hash: -3794428632218759846
|
|
232
232
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
233
233
|
none: false
|
|
234
234
|
requirements:
|
|
@@ -237,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
237
237
|
version: '0'
|
|
238
238
|
segments:
|
|
239
239
|
- 0
|
|
240
|
-
hash:
|
|
240
|
+
hash: -3794428632218759846
|
|
241
241
|
requirements: []
|
|
242
242
|
rubyforge_project:
|
|
243
243
|
rubygems_version: 1.8.25
|