state_shifter 1.0.7 → 1.1.2
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/Gemfile +5 -3
- data/Gemfile.lock +47 -41
- data/VERSION +1 -1
- data/spec/state_shifter_spec.rb +71 -73
- data/state_shifter.gemspec +19 -13
- metadata +36 -20
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 632c9dce2768ea8a6456e78bb5b933efde9fd924
|
|
4
|
+
data.tar.gz: a72e1863a793aa59b14875040230e4ef56ada5e8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 14a112d6956552d42b8ece91fc1f4485b84c83c2ac68448cefc24be287dc091dfc0d12b95e5703d2fe633c898bba5caece6bcc1a3d64a0e75cf1fa7c3de21d02
|
|
7
|
+
data.tar.gz: 93a025a71fef0c8cd58cfce1ba971bf3a22af1aa500c321b1a0693210f502a08f7bf53f61ecae1ac94b5c819bab354457c1dc628bf8ab9bbe2e30dbaa257d313
|
data/Gemfile
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
source "http://rubygems.org"
|
|
2
2
|
|
|
3
3
|
group :development do
|
|
4
|
-
gem 'activerecord', '~> 4.
|
|
4
|
+
gem 'activerecord', '~> 4.1.11'
|
|
5
|
+
gem 'rack', '~> 1.5.4'
|
|
5
6
|
gem 'sqlite3', '~> 1.3', '>= 1.3.10'
|
|
6
7
|
gem "rspec", '~> 3.2.0'
|
|
7
8
|
gem "yard", "~> 0.7"
|
|
8
9
|
gem 'redcarpet', '~> 3.2', '>= 3.2.3'
|
|
9
10
|
gem "rdoc", "~> 4.0"
|
|
10
11
|
gem "bundler", '~> 1.7', '>= 1.7.12'
|
|
11
|
-
gem "jeweler", '~>
|
|
12
|
+
gem "jeweler", '~> 2.0'
|
|
12
13
|
gem "simplecov", '~> 0'
|
|
13
14
|
gem 'pry', '~> 0'
|
|
14
|
-
gem 'ruby-graphviz', '~> 1.2', '>= 1.2.
|
|
15
|
+
gem 'ruby-graphviz', '~> 1.2', '>= 1.2.2'
|
|
15
16
|
gem 'json', '~> 1.8', '>= 1.8.2'
|
|
16
17
|
gem 'i18n', '~> 0.6', '>= 0.6.6'
|
|
18
|
+
gem 'nokogiri', '>= 1.6.3'
|
|
17
19
|
end
|
data/Gemfile.lock
CHANGED
|
@@ -1,57 +1,60 @@
|
|
|
1
1
|
GEM
|
|
2
2
|
remote: http://rubygems.org/
|
|
3
3
|
specs:
|
|
4
|
-
activemodel (4.
|
|
5
|
-
activesupport (= 4.
|
|
6
|
-
builder (~> 3.1
|
|
7
|
-
activerecord (4.
|
|
8
|
-
activemodel (= 4.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
activerecord-deprecated_finders (1.0.4)
|
|
13
|
-
activesupport (4.0.13)
|
|
4
|
+
activemodel (4.1.12)
|
|
5
|
+
activesupport (= 4.1.12)
|
|
6
|
+
builder (~> 3.1)
|
|
7
|
+
activerecord (4.1.12)
|
|
8
|
+
activemodel (= 4.1.12)
|
|
9
|
+
activesupport (= 4.1.12)
|
|
10
|
+
arel (~> 5.0.0)
|
|
11
|
+
activesupport (4.1.12)
|
|
14
12
|
i18n (~> 0.6, >= 0.6.9)
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
json (~> 1.7, >= 1.7.7)
|
|
14
|
+
minitest (~> 5.1)
|
|
17
15
|
thread_safe (~> 0.1)
|
|
18
|
-
tzinfo (~>
|
|
16
|
+
tzinfo (~> 1.1)
|
|
19
17
|
addressable (2.3.8)
|
|
20
|
-
arel (
|
|
21
|
-
builder (3.
|
|
18
|
+
arel (5.0.1.20140414130214)
|
|
19
|
+
builder (3.2.2)
|
|
22
20
|
coderay (1.1.0)
|
|
21
|
+
descendants_tracker (0.0.4)
|
|
22
|
+
thread_safe (~> 0.3, >= 0.3.1)
|
|
23
23
|
diff-lcs (1.2.5)
|
|
24
24
|
docile (1.1.5)
|
|
25
|
-
faraday (0.
|
|
26
|
-
multipart-post (
|
|
25
|
+
faraday (0.9.1)
|
|
26
|
+
multipart-post (>= 1.2, < 3)
|
|
27
27
|
git (1.2.9.1)
|
|
28
|
-
github_api (0.
|
|
29
|
-
addressable
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
github_api (0.12.3)
|
|
29
|
+
addressable (~> 2.3)
|
|
30
|
+
descendants_tracker (~> 0.0.4)
|
|
31
|
+
faraday (~> 0.8, < 0.10)
|
|
32
|
+
hashie (>= 3.3)
|
|
33
|
+
multi_json (>= 1.7.5, < 2.0)
|
|
34
|
+
nokogiri (~> 1.6.3)
|
|
34
35
|
oauth2
|
|
35
|
-
hashie (3.4.
|
|
36
|
-
highline (1.7.
|
|
36
|
+
hashie (3.4.2)
|
|
37
|
+
highline (1.7.2)
|
|
37
38
|
i18n (0.7.0)
|
|
38
|
-
jeweler (
|
|
39
|
+
jeweler (2.0.1)
|
|
39
40
|
builder
|
|
40
|
-
bundler (
|
|
41
|
+
bundler (>= 1.0)
|
|
41
42
|
git (>= 1.2.5)
|
|
42
|
-
github_api
|
|
43
|
+
github_api
|
|
43
44
|
highline (>= 1.6.15)
|
|
44
|
-
nokogiri (
|
|
45
|
+
nokogiri (>= 1.5.10)
|
|
45
46
|
rake
|
|
46
47
|
rdoc
|
|
47
|
-
json (1.8.
|
|
48
|
-
jwt (1.
|
|
48
|
+
json (1.8.3)
|
|
49
|
+
jwt (1.5.1)
|
|
49
50
|
method_source (0.8.2)
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
mini_portile (0.6.2)
|
|
52
|
+
minitest (5.7.0)
|
|
53
|
+
multi_json (1.11.2)
|
|
52
54
|
multi_xml (0.5.5)
|
|
53
|
-
multipart-post (
|
|
54
|
-
nokogiri (1.
|
|
55
|
+
multipart-post (2.0.0)
|
|
56
|
+
nokogiri (1.6.6.2)
|
|
57
|
+
mini_portile (~> 0.6.0)
|
|
55
58
|
oauth2 (1.0.0)
|
|
56
59
|
faraday (>= 0.8, < 0.10)
|
|
57
60
|
jwt (~> 1.0)
|
|
@@ -62,7 +65,7 @@ GEM
|
|
|
62
65
|
coderay (~> 1.1.0)
|
|
63
66
|
method_source (~> 0.8.1)
|
|
64
67
|
slop (~> 3.4)
|
|
65
|
-
rack (1.
|
|
68
|
+
rack (1.5.5)
|
|
66
69
|
rake (10.4.2)
|
|
67
70
|
rdoc (4.2.0)
|
|
68
71
|
redcarpet (3.2.3)
|
|
@@ -79,7 +82,7 @@ GEM
|
|
|
79
82
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
80
83
|
rspec-support (~> 3.2.0)
|
|
81
84
|
rspec-support (3.2.2)
|
|
82
|
-
ruby-graphviz (1.2.
|
|
85
|
+
ruby-graphviz (1.2.2)
|
|
83
86
|
simplecov (0.9.2)
|
|
84
87
|
docile (~> 1.1.0)
|
|
85
88
|
multi_json (~> 1.0)
|
|
@@ -88,23 +91,26 @@ GEM
|
|
|
88
91
|
slop (3.6.0)
|
|
89
92
|
sqlite3 (1.3.10)
|
|
90
93
|
thread_safe (0.3.5)
|
|
91
|
-
tzinfo (
|
|
94
|
+
tzinfo (1.2.2)
|
|
95
|
+
thread_safe (~> 0.1)
|
|
92
96
|
yard (0.8.7.6)
|
|
93
97
|
|
|
94
98
|
PLATFORMS
|
|
95
99
|
ruby
|
|
96
100
|
|
|
97
101
|
DEPENDENCIES
|
|
98
|
-
activerecord (~> 4.
|
|
102
|
+
activerecord (~> 4.1.11)
|
|
99
103
|
bundler (~> 1.7, >= 1.7.12)
|
|
100
104
|
i18n (~> 0.6, >= 0.6.6)
|
|
101
|
-
jeweler (~>
|
|
105
|
+
jeweler (~> 2.0)
|
|
102
106
|
json (~> 1.8, >= 1.8.2)
|
|
107
|
+
nokogiri (>= 1.6.3)
|
|
103
108
|
pry (~> 0)
|
|
109
|
+
rack (~> 1.5.4)
|
|
104
110
|
rdoc (~> 4.0)
|
|
105
111
|
redcarpet (~> 3.2, >= 3.2.3)
|
|
106
112
|
rspec (~> 3.2.0)
|
|
107
|
-
ruby-graphviz (~> 1.2, >= 1.2.
|
|
113
|
+
ruby-graphviz (~> 1.2, >= 1.2.2)
|
|
108
114
|
simplecov (~> 0)
|
|
109
115
|
sqlite3 (~> 1.3, >= 1.3.10)
|
|
110
116
|
yard (~> 0.7)
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.
|
|
1
|
+
1.1.2
|
data/spec/state_shifter_spec.rb
CHANGED
|
@@ -12,94 +12,94 @@ shared_examples_for 'a simple state machine' do
|
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
it 'should have all states and events defined' do
|
|
15
|
-
@state_machine.state_names.
|
|
16
|
-
@state_machine.event_names.
|
|
15
|
+
expect(@state_machine.state_names).to eq [:new, :awaiting_review, :being_reviewed, :accepted, :rejected]
|
|
16
|
+
expect(@state_machine.event_names).to eq [:submit, :review, :accept, :reject]
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
it 'should have the proper initial state set' do
|
|
20
|
-
@state_machine.initial_state.
|
|
21
|
-
@state_machine.current_state.
|
|
20
|
+
expect(@state_machine.initial_state).to eq :new
|
|
21
|
+
expect(@state_machine.current_state).to eq :new
|
|
22
22
|
|
|
23
|
-
@state_machine.current_state_def.initial
|
|
23
|
+
expect(@state_machine.current_state_def.initial?).to be_truthy
|
|
24
24
|
|
|
25
25
|
@state_machine.submit
|
|
26
|
-
@state_machine.initial_state.
|
|
26
|
+
expect(@state_machine.initial_state).to eq :new
|
|
27
27
|
|
|
28
|
-
@state_machine.current_state.
|
|
28
|
+
expect(@state_machine.current_state).to eq :awaiting_review
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
it 'should transit between states properly' do
|
|
32
|
-
@state_machine.current_state.
|
|
32
|
+
expect(@state_machine.current_state).to eq :new
|
|
33
33
|
@state_machine.submit
|
|
34
|
-
@state_machine.current_state.
|
|
34
|
+
expect(@state_machine.current_state).to eq :awaiting_review
|
|
35
35
|
|
|
36
36
|
@state_machine.review!
|
|
37
|
-
@state_machine.current_state.
|
|
37
|
+
expect(@state_machine.current_state).to eq :being_reviewed
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
it 'should know the current state' do
|
|
41
|
-
@state_machine.current_state.
|
|
41
|
+
expect(@state_machine.current_state).to eq :new
|
|
42
42
|
|
|
43
|
-
@state_machine.new
|
|
44
|
-
@state_machine.accepted
|
|
43
|
+
expect(@state_machine.new?).to be_truthy
|
|
44
|
+
expect(@state_machine.accepted?).to be_falsey
|
|
45
45
|
|
|
46
46
|
@state_machine.submit
|
|
47
47
|
|
|
48
|
-
@state_machine.awaiting_review
|
|
49
|
-
@state_machine.new
|
|
48
|
+
expect(@state_machine.awaiting_review?).to be_truthy
|
|
49
|
+
expect(@state_machine.new?).to be_falsey
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
it 'should respect guard statements' do
|
|
53
|
-
@state_machine.current_state.
|
|
53
|
+
expect(@state_machine.current_state).to eq :new
|
|
54
54
|
@state_machine.submit
|
|
55
55
|
@state_machine.review
|
|
56
56
|
|
|
57
|
-
@state_machine.reject.
|
|
58
|
-
lambda { @state_machine.reject!}.
|
|
57
|
+
expect(@state_machine.reject).to_not be_truthy
|
|
58
|
+
expect(lambda { @state_machine.reject!}).to raise_error(StateShifter::GuardNotSatisfied, 'bad_article?')
|
|
59
59
|
|
|
60
|
-
@state_machine.accept.
|
|
61
|
-
@state_machine.current_state.
|
|
60
|
+
expect(@state_machine.accept).to be_truthy
|
|
61
|
+
expect(@state_machine.current_state).to eq :accepted
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
it 'should know if a transition is possible' do
|
|
65
|
-
@state_machine.current_state.
|
|
66
|
-
@state_machine.can_submit
|
|
65
|
+
expect(@state_machine.current_state).to eq :new
|
|
66
|
+
expect(@state_machine.can_submit?).to be_truthy
|
|
67
67
|
|
|
68
68
|
@state_machine.submit
|
|
69
69
|
|
|
70
|
-
@state_machine.can_review
|
|
70
|
+
expect(@state_machine.can_review?).to be_truthy
|
|
71
71
|
|
|
72
72
|
@state_machine.review
|
|
73
73
|
|
|
74
|
-
@state_machine.can_accept
|
|
75
|
-
@state_machine.can_reject
|
|
74
|
+
expect(@state_machine.can_accept?).to be_truthy
|
|
75
|
+
expect(@state_machine.can_reject?).to be_falsey
|
|
76
76
|
end
|
|
77
77
|
|
|
78
78
|
it 'should properly indicate next states' do
|
|
79
|
-
@state_machine.current_state.
|
|
80
|
-
@state_machine.next_states.
|
|
81
|
-
@state_machine.transitionable_states.
|
|
79
|
+
expect(@state_machine.current_state).to eq :new
|
|
80
|
+
expect(@state_machine.next_states).to eq [:awaiting_review]
|
|
81
|
+
expect(@state_machine.transitionable_states).to eq [:awaiting_review]
|
|
82
82
|
|
|
83
|
-
@state_machine.current_state_def.final
|
|
83
|
+
expect(@state_machine.current_state_def.final?).to be_falsey
|
|
84
84
|
|
|
85
85
|
@state_machine.submit!
|
|
86
|
-
@state_machine.next_states.
|
|
87
|
-
@state_machine.transitionable_states.
|
|
86
|
+
expect(@state_machine.next_states).to eq [:being_reviewed]
|
|
87
|
+
expect(@state_machine.transitionable_states).to eq [:being_reviewed]
|
|
88
88
|
|
|
89
89
|
@state_machine.review!
|
|
90
|
-
@state_machine.next_states.
|
|
91
|
-
@state_machine.transitionable_states.
|
|
90
|
+
expect(@state_machine.next_states).to eq [:accepted, :rejected]
|
|
91
|
+
expect(@state_machine.transitionable_states).to eq [:accepted]
|
|
92
92
|
|
|
93
93
|
@state_machine.accept
|
|
94
|
-
@state_machine.next_states.
|
|
95
|
-
@state_machine.transitionable_states.
|
|
94
|
+
expect(@state_machine.next_states).to eq []
|
|
95
|
+
expect(@state_machine.transitionable_states).to eq []
|
|
96
96
|
|
|
97
|
-
@state_machine.current_state_def.final
|
|
97
|
+
expect(@state_machine.current_state_def.final?).to be_truthy
|
|
98
98
|
end
|
|
99
99
|
|
|
100
100
|
it 'should respect proper transition precedence' do
|
|
101
|
-
@state_machine.current_state.
|
|
102
|
-
lambda { @state_machine.review! }.
|
|
101
|
+
expect(@state_machine.current_state).to eq :new
|
|
102
|
+
expect(lambda { @state_machine.review! }).to raise_error(StateShifter::TransitionHalted, 'you cannot transition from new via review')
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
end
|
|
@@ -113,15 +113,15 @@ end
|
|
|
113
113
|
describe 'Malformed state machines' do
|
|
114
114
|
|
|
115
115
|
it 'should complain about redifining states' do
|
|
116
|
-
lambda { require_relative '../examples/malformed_states' }.
|
|
116
|
+
expect(lambda { require_relative '../examples/malformed_states' }).to raise_error(StateShifter::RedifiningState, 'new')
|
|
117
117
|
end
|
|
118
118
|
|
|
119
119
|
it 'should complain about redifining events' do
|
|
120
|
-
lambda { require_relative '../examples/malformed_events' }.
|
|
120
|
+
expect(lambda { require_relative '../examples/malformed_events' }).to raise_error(StateShifter::RedifiningEvent, 'submit')
|
|
121
121
|
end
|
|
122
122
|
|
|
123
123
|
it 'should complain when the persistence attribute is set after the state machine definition' do
|
|
124
|
-
lambda { require_relative '../examples/malformed_persistence' }.
|
|
124
|
+
expect(lambda { require_relative '../examples/malformed_persistence' }).to raise_error(StateShifter::PersistenceAttributeAlreadyDefined)
|
|
125
125
|
end
|
|
126
126
|
|
|
127
127
|
end
|
|
@@ -133,32 +133,30 @@ describe 'Advanced state machine functionality' do
|
|
|
133
133
|
end
|
|
134
134
|
|
|
135
135
|
it 'should complain about undefined guards' do
|
|
136
|
-
lambda { @advanced.can_start_date_reached?}.
|
|
136
|
+
expect(lambda { @advanced.can_start_date_reached?}).to raise_error(StateShifter::GuardMethodUndefined, 'start_date_reached?')
|
|
137
137
|
end
|
|
138
138
|
|
|
139
139
|
it 'should call looping event callbacks' do
|
|
140
|
-
@advanced.
|
|
141
|
-
|
|
142
|
-
@advanced.should_receive(:handle_start_date_changed)
|
|
140
|
+
expect(@advanced).to receive(:handle_start_date_changed)
|
|
143
141
|
@advanced.start_date_changed
|
|
144
142
|
end
|
|
145
143
|
|
|
146
144
|
it 'state on_entry callbacks should work' do
|
|
147
145
|
# block
|
|
148
|
-
@advanced.
|
|
146
|
+
expect(@advanced).to receive(:running_entry).with(:initialized, :forced_start).and_return(nil)
|
|
149
147
|
@advanced.forced_start
|
|
150
148
|
|
|
151
149
|
# method name only
|
|
152
|
-
@advanced.
|
|
150
|
+
expect(@advanced).to receive(:send_notification_to_organizers).with(no_args())
|
|
153
151
|
@advanced.deadline_reached!
|
|
154
152
|
end
|
|
155
153
|
|
|
156
154
|
it 'state on_entry callbacks with an argument should work' do
|
|
157
155
|
@advanced.forced_start
|
|
158
|
-
@advanced.
|
|
156
|
+
allow(@advanced).to receive(:entries_deadline_reached_without_approvals?).and_return(true)
|
|
159
157
|
|
|
160
158
|
# method name only with args
|
|
161
|
-
@advanced.
|
|
159
|
+
expect(@advanced).to receive(:send_notification).with(:pending_users)
|
|
162
160
|
@advanced.deadline_reached_without_approvals!
|
|
163
161
|
end
|
|
164
162
|
|
|
@@ -166,18 +164,18 @@ describe 'Advanced state machine functionality' do
|
|
|
166
164
|
@advanced.forced_start
|
|
167
165
|
|
|
168
166
|
# method name only with args
|
|
169
|
-
@advanced.
|
|
167
|
+
expect(@advanced).to receive(:send_notification).with([:stakeholders, :organizers])
|
|
170
168
|
@advanced.abort_running_contest!
|
|
171
169
|
end
|
|
172
170
|
|
|
173
171
|
it 'the on_transition callback should work' do
|
|
174
|
-
@advanced.
|
|
172
|
+
expect(@advanced).to receive(:benchmark).with(:initialized, :running, :forced_start!, an_instance_of(Float)).and_return(nil)
|
|
175
173
|
@advanced.forced_start!
|
|
176
174
|
end
|
|
177
175
|
|
|
178
176
|
it 'the on_transition callback should work in the proper order' do
|
|
179
|
-
@advanced.
|
|
180
|
-
@advanced.
|
|
177
|
+
expect(@advanced).to receive(:benchmark).ordered.with(:initialized, :preparing, :event_associated!, an_instance_of(Float)).and_return(nil)
|
|
178
|
+
expect(@advanced).to receive(:benchmark).ordered.with(:preparing, :running, :all_done!, an_instance_of(Float)).and_return(nil)
|
|
181
179
|
@advanced.event_associated!
|
|
182
180
|
end
|
|
183
181
|
|
|
@@ -207,37 +205,37 @@ describe Review do
|
|
|
207
205
|
state_machine = described_class.new
|
|
208
206
|
state_machine.save
|
|
209
207
|
|
|
210
|
-
state_machine.current_state.
|
|
208
|
+
expect(state_machine.current_state).to eq :new
|
|
211
209
|
state_machine.update_attribute(:current_state, "new")
|
|
212
210
|
|
|
213
|
-
state_machine.new
|
|
211
|
+
expect(state_machine.new?).to be_truthy
|
|
214
212
|
|
|
215
213
|
state_machine.submit
|
|
216
|
-
state_machine.initial_state.
|
|
214
|
+
expect(state_machine.initial_state).to eq :new
|
|
217
215
|
|
|
218
|
-
state_machine.current_state.
|
|
216
|
+
expect(state_machine.current_state).to eq :awaiting_review
|
|
219
217
|
end
|
|
220
218
|
|
|
221
219
|
it "should have tag methods" do
|
|
222
|
-
described_class.reviewable_states.
|
|
220
|
+
expect(described_class.reviewable_states).to eq([:new, :awaiting_review, :being_reviewed])
|
|
223
221
|
|
|
224
222
|
state_machine = described_class.new
|
|
225
223
|
state_machine.save
|
|
226
224
|
|
|
227
|
-
state_machine.reviewable
|
|
228
|
-
state_machine.processing
|
|
225
|
+
expect(state_machine.reviewable?).to be_truthy
|
|
226
|
+
expect(state_machine.processing?).to be_falsey
|
|
229
227
|
|
|
230
228
|
state_machine.submit
|
|
231
|
-
state_machine.reviewable
|
|
232
|
-
state_machine.processing
|
|
229
|
+
expect(state_machine.reviewable?).to be_truthy
|
|
230
|
+
expect(state_machine.processing?).to be_truthy
|
|
233
231
|
|
|
234
232
|
state_machine.review!
|
|
235
|
-
state_machine.reviewable
|
|
236
|
-
state_machine.processing
|
|
233
|
+
expect(state_machine.reviewable?).to be_truthy
|
|
234
|
+
expect(state_machine.processing?).to be_truthy
|
|
237
235
|
|
|
238
236
|
state_machine.accept!
|
|
239
|
-
state_machine.reviewable
|
|
240
|
-
state_machine.processing
|
|
237
|
+
expect(state_machine.reviewable?).to be_falsey
|
|
238
|
+
expect(state_machine.processing?).to be_falsey
|
|
241
239
|
end
|
|
242
240
|
|
|
243
241
|
it "should have state scopes" do
|
|
@@ -245,8 +243,8 @@ describe Review do
|
|
|
245
243
|
state_machine.save
|
|
246
244
|
state_machine.submit
|
|
247
245
|
|
|
248
|
-
described_class.awaiting_review.size.
|
|
249
|
-
described_class.reviewable.size.
|
|
246
|
+
expect(described_class.awaiting_review.size).to eq(1)
|
|
247
|
+
expect(described_class.reviewable.size).to eq(1)
|
|
250
248
|
end
|
|
251
249
|
|
|
252
250
|
end
|
|
@@ -271,15 +269,15 @@ describe ReviewCustomPersistence do
|
|
|
271
269
|
state_machine = described_class.new
|
|
272
270
|
state_machine.save
|
|
273
271
|
|
|
274
|
-
state_machine.current_state.
|
|
272
|
+
expect(state_machine.current_state).to eq :new
|
|
275
273
|
state_machine.update_attribute(:stamp, "new")
|
|
276
274
|
|
|
277
|
-
state_machine.new
|
|
275
|
+
expect(state_machine.new?).to be_truthy
|
|
278
276
|
|
|
279
277
|
state_machine.submit
|
|
280
|
-
state_machine.initial_state.
|
|
278
|
+
expect(state_machine.initial_state).to eq :new
|
|
281
279
|
|
|
282
|
-
state_machine.current_state.
|
|
280
|
+
expect(state_machine.current_state).to eq :awaiting_review
|
|
283
281
|
end
|
|
284
282
|
|
|
285
283
|
end
|
|
@@ -301,7 +299,7 @@ describe 'Malformed persistence definition' do
|
|
|
301
299
|
it 'should complain when the persist attribute is not present' do
|
|
302
300
|
require_relative '../examples/missing_persistence'
|
|
303
301
|
review_custom_persistence = MissingPersistence.new
|
|
304
|
-
lambda { review_custom_persistence.save }.
|
|
302
|
+
expect(lambda { review_custom_persistence.save }).to raise_error(StateShifter::Definition::StatePersistenceAttributeNotPresent)
|
|
305
303
|
end
|
|
306
304
|
|
|
307
305
|
end
|
data/state_shifter.gemspec
CHANGED
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
|
5
|
-
# stub: state_shifter 1.
|
|
5
|
+
# stub: state_shifter 1.1.2 ruby lib
|
|
6
6
|
|
|
7
7
|
Gem::Specification.new do |s|
|
|
8
8
|
s.name = "state_shifter"
|
|
9
|
-
s.version = "1.
|
|
9
|
+
s.version = "1.1.2"
|
|
10
10
|
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
12
12
|
s.require_paths = ["lib"]
|
|
13
13
|
s.authors = ["Bruno Antunes"]
|
|
14
|
-
s.date = "2015-
|
|
14
|
+
s.date = "2015-08-01"
|
|
15
15
|
s.description = "state_shifter is a gem that adds state machine behavior to a class"
|
|
16
16
|
s.email = "sardaukar.siet@gmail.com"
|
|
17
17
|
s.extra_rdoc_files = [
|
|
@@ -51,55 +51,61 @@ Gem::Specification.new do |s|
|
|
|
51
51
|
]
|
|
52
52
|
s.homepage = "http://github.com/sardaukar/state_shifter"
|
|
53
53
|
s.licenses = ["MIT"]
|
|
54
|
-
s.rubygems_version = "2.4.
|
|
54
|
+
s.rubygems_version = "2.4.6"
|
|
55
55
|
s.summary = "state_shifter is a gem that adds state machine behavior to a class"
|
|
56
56
|
|
|
57
57
|
if s.respond_to? :specification_version then
|
|
58
58
|
s.specification_version = 4
|
|
59
59
|
|
|
60
60
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
61
|
-
s.add_development_dependency(%q<activerecord>, ["
|
|
61
|
+
s.add_development_dependency(%q<activerecord>, ["~> 4.1.11"])
|
|
62
|
+
s.add_development_dependency(%q<rack>, ["~> 1.5.4"])
|
|
62
63
|
s.add_development_dependency(%q<sqlite3>, [">= 1.3.10", "~> 1.3"])
|
|
63
64
|
s.add_development_dependency(%q<rspec>, ["~> 3.2.0"])
|
|
64
65
|
s.add_development_dependency(%q<yard>, ["~> 0.7"])
|
|
65
66
|
s.add_development_dependency(%q<redcarpet>, [">= 3.2.3", "~> 3.2"])
|
|
66
67
|
s.add_development_dependency(%q<rdoc>, ["~> 4.0"])
|
|
67
68
|
s.add_development_dependency(%q<bundler>, [">= 1.7.12", "~> 1.7"])
|
|
68
|
-
s.add_development_dependency(%q<jeweler>, ["
|
|
69
|
+
s.add_development_dependency(%q<jeweler>, ["~> 2.0"])
|
|
69
70
|
s.add_development_dependency(%q<simplecov>, ["~> 0"])
|
|
70
71
|
s.add_development_dependency(%q<pry>, ["~> 0"])
|
|
71
|
-
s.add_development_dependency(%q<ruby-graphviz>, [">= 1.2.
|
|
72
|
+
s.add_development_dependency(%q<ruby-graphviz>, [">= 1.2.2", "~> 1.2"])
|
|
72
73
|
s.add_development_dependency(%q<json>, [">= 1.8.2", "~> 1.8"])
|
|
73
74
|
s.add_development_dependency(%q<i18n>, [">= 0.6.6", "~> 0.6"])
|
|
75
|
+
s.add_development_dependency(%q<nokogiri>, [">= 1.6.3"])
|
|
74
76
|
else
|
|
75
|
-
s.add_dependency(%q<activerecord>, ["
|
|
77
|
+
s.add_dependency(%q<activerecord>, ["~> 4.1.11"])
|
|
78
|
+
s.add_dependency(%q<rack>, ["~> 1.5.4"])
|
|
76
79
|
s.add_dependency(%q<sqlite3>, [">= 1.3.10", "~> 1.3"])
|
|
77
80
|
s.add_dependency(%q<rspec>, ["~> 3.2.0"])
|
|
78
81
|
s.add_dependency(%q<yard>, ["~> 0.7"])
|
|
79
82
|
s.add_dependency(%q<redcarpet>, [">= 3.2.3", "~> 3.2"])
|
|
80
83
|
s.add_dependency(%q<rdoc>, ["~> 4.0"])
|
|
81
84
|
s.add_dependency(%q<bundler>, [">= 1.7.12", "~> 1.7"])
|
|
82
|
-
s.add_dependency(%q<jeweler>, ["
|
|
85
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0"])
|
|
83
86
|
s.add_dependency(%q<simplecov>, ["~> 0"])
|
|
84
87
|
s.add_dependency(%q<pry>, ["~> 0"])
|
|
85
|
-
s.add_dependency(%q<ruby-graphviz>, [">= 1.2.
|
|
88
|
+
s.add_dependency(%q<ruby-graphviz>, [">= 1.2.2", "~> 1.2"])
|
|
86
89
|
s.add_dependency(%q<json>, [">= 1.8.2", "~> 1.8"])
|
|
87
90
|
s.add_dependency(%q<i18n>, [">= 0.6.6", "~> 0.6"])
|
|
91
|
+
s.add_dependency(%q<nokogiri>, [">= 1.6.3"])
|
|
88
92
|
end
|
|
89
93
|
else
|
|
90
|
-
s.add_dependency(%q<activerecord>, ["
|
|
94
|
+
s.add_dependency(%q<activerecord>, ["~> 4.1.11"])
|
|
95
|
+
s.add_dependency(%q<rack>, ["~> 1.5.4"])
|
|
91
96
|
s.add_dependency(%q<sqlite3>, [">= 1.3.10", "~> 1.3"])
|
|
92
97
|
s.add_dependency(%q<rspec>, ["~> 3.2.0"])
|
|
93
98
|
s.add_dependency(%q<yard>, ["~> 0.7"])
|
|
94
99
|
s.add_dependency(%q<redcarpet>, [">= 3.2.3", "~> 3.2"])
|
|
95
100
|
s.add_dependency(%q<rdoc>, ["~> 4.0"])
|
|
96
101
|
s.add_dependency(%q<bundler>, [">= 1.7.12", "~> 1.7"])
|
|
97
|
-
s.add_dependency(%q<jeweler>, ["
|
|
102
|
+
s.add_dependency(%q<jeweler>, ["~> 2.0"])
|
|
98
103
|
s.add_dependency(%q<simplecov>, ["~> 0"])
|
|
99
104
|
s.add_dependency(%q<pry>, ["~> 0"])
|
|
100
|
-
s.add_dependency(%q<ruby-graphviz>, [">= 1.2.
|
|
105
|
+
s.add_dependency(%q<ruby-graphviz>, [">= 1.2.2", "~> 1.2"])
|
|
101
106
|
s.add_dependency(%q<json>, [">= 1.8.2", "~> 1.8"])
|
|
102
107
|
s.add_dependency(%q<i18n>, [">= 0.6.6", "~> 0.6"])
|
|
108
|
+
s.add_dependency(%q<nokogiri>, [">= 1.6.3"])
|
|
103
109
|
end
|
|
104
110
|
end
|
|
105
111
|
|
metadata
CHANGED
|
@@ -1,35 +1,43 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: state_shifter
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Bruno Antunes
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-08-01 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - ">="
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: 4.0.9
|
|
20
17
|
- - "~>"
|
|
21
18
|
- !ruby/object:Gem::Version
|
|
22
|
-
version:
|
|
19
|
+
version: 4.1.11
|
|
23
20
|
type: :development
|
|
24
21
|
prerelease: false
|
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
26
23
|
requirements:
|
|
27
|
-
- - "
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: 4.1.11
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rack
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
28
32
|
- !ruby/object:Gem::Version
|
|
29
|
-
version:
|
|
33
|
+
version: 1.5.4
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
30
38
|
- - "~>"
|
|
31
39
|
- !ruby/object:Gem::Version
|
|
32
|
-
version:
|
|
40
|
+
version: 1.5.4
|
|
33
41
|
- !ruby/object:Gem::Dependency
|
|
34
42
|
name: sqlite3
|
|
35
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -136,22 +144,16 @@ dependencies:
|
|
|
136
144
|
name: jeweler
|
|
137
145
|
requirement: !ruby/object:Gem::Requirement
|
|
138
146
|
requirements:
|
|
139
|
-
- - ">="
|
|
140
|
-
- !ruby/object:Gem::Version
|
|
141
|
-
version: 1.8.4
|
|
142
147
|
- - "~>"
|
|
143
148
|
- !ruby/object:Gem::Version
|
|
144
|
-
version: '
|
|
149
|
+
version: '2.0'
|
|
145
150
|
type: :development
|
|
146
151
|
prerelease: false
|
|
147
152
|
version_requirements: !ruby/object:Gem::Requirement
|
|
148
153
|
requirements:
|
|
149
|
-
- - ">="
|
|
150
|
-
- !ruby/object:Gem::Version
|
|
151
|
-
version: 1.8.4
|
|
152
154
|
- - "~>"
|
|
153
155
|
- !ruby/object:Gem::Version
|
|
154
|
-
version: '
|
|
156
|
+
version: '2.0'
|
|
155
157
|
- !ruby/object:Gem::Dependency
|
|
156
158
|
name: simplecov
|
|
157
159
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -186,7 +188,7 @@ dependencies:
|
|
|
186
188
|
requirements:
|
|
187
189
|
- - ">="
|
|
188
190
|
- !ruby/object:Gem::Version
|
|
189
|
-
version: 1.2.
|
|
191
|
+
version: 1.2.2
|
|
190
192
|
- - "~>"
|
|
191
193
|
- !ruby/object:Gem::Version
|
|
192
194
|
version: '1.2'
|
|
@@ -196,7 +198,7 @@ dependencies:
|
|
|
196
198
|
requirements:
|
|
197
199
|
- - ">="
|
|
198
200
|
- !ruby/object:Gem::Version
|
|
199
|
-
version: 1.2.
|
|
201
|
+
version: 1.2.2
|
|
200
202
|
- - "~>"
|
|
201
203
|
- !ruby/object:Gem::Version
|
|
202
204
|
version: '1.2'
|
|
@@ -240,6 +242,20 @@ dependencies:
|
|
|
240
242
|
- - "~>"
|
|
241
243
|
- !ruby/object:Gem::Version
|
|
242
244
|
version: '0.6'
|
|
245
|
+
- !ruby/object:Gem::Dependency
|
|
246
|
+
name: nokogiri
|
|
247
|
+
requirement: !ruby/object:Gem::Requirement
|
|
248
|
+
requirements:
|
|
249
|
+
- - ">="
|
|
250
|
+
- !ruby/object:Gem::Version
|
|
251
|
+
version: 1.6.3
|
|
252
|
+
type: :development
|
|
253
|
+
prerelease: false
|
|
254
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
255
|
+
requirements:
|
|
256
|
+
- - ">="
|
|
257
|
+
- !ruby/object:Gem::Version
|
|
258
|
+
version: 1.6.3
|
|
243
259
|
description: state_shifter is a gem that adds state machine behavior to a class
|
|
244
260
|
email: sardaukar.siet@gmail.com
|
|
245
261
|
executables: []
|
|
@@ -297,7 +313,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
297
313
|
version: '0'
|
|
298
314
|
requirements: []
|
|
299
315
|
rubyforge_project:
|
|
300
|
-
rubygems_version: 2.4.
|
|
316
|
+
rubygems_version: 2.4.6
|
|
301
317
|
signing_key:
|
|
302
318
|
specification_version: 4
|
|
303
319
|
summary: state_shifter is a gem that adds state machine behavior to a class
|