aasm 5.0.8 → 5.5.0
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/README.md +108 -17
- data/lib/aasm/base.rb +44 -12
- data/lib/aasm/configuration.rb +3 -0
- data/lib/aasm/core/event.rb +12 -6
- data/lib/aasm/core/invokers/class_invoker.rb +1 -1
- data/lib/aasm/core/invokers/literal_invoker.rb +3 -1
- data/lib/aasm/core/state.rb +6 -5
- data/lib/aasm/core/transition.rb +1 -1
- data/lib/aasm/dsl_helper.rb +24 -22
- data/lib/aasm/errors.rb +1 -0
- data/lib/aasm/instance_base.rb +15 -4
- data/lib/aasm/localizer.rb +13 -3
- data/lib/aasm/persistence/active_record_persistence.rb +18 -0
- data/lib/aasm/persistence/base.rb +13 -2
- data/lib/aasm/persistence/orm.rb +23 -19
- data/lib/aasm/version.rb +1 -1
- data/lib/aasm.rb +0 -2
- data/lib/generators/aasm/orm_helpers.rb +1 -1
- data/lib/generators/active_record/templates/migration.rb +1 -1
- metadata +9 -397
- data/.document +0 -6
- data/.github/ISSUE_TEMPLATE/bug_report.md +0 -27
- data/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- data/.gitignore +0 -20
- data/.travis.yml +0 -100
- data/API +0 -34
- data/Appraisals +0 -71
- data/CHANGELOG.md +0 -431
- data/CODE_OF_CONDUCT.md +0 -13
- data/CONTRIBUTING.md +0 -24
- data/Dockerfile +0 -44
- data/Gemfile +0 -6
- data/Gemfile.lock_old +0 -151
- data/HOWTO +0 -12
- data/PLANNED_CHANGES.md +0 -11
- data/README_FROM_VERSION_3_TO_4.md +0 -240
- data/Rakefile +0 -31
- data/TESTING.md +0 -25
- data/aasm.gemspec +0 -37
- data/callbacks.txt +0 -51
- data/docker-compose.yml +0 -40
- data/gemfiles/norails.gemfile +0 -10
- data/gemfiles/rails_3.2.gemfile +0 -14
- data/gemfiles/rails_4.2.gemfile +0 -16
- data/gemfiles/rails_4.2_mongoid_5.gemfile +0 -11
- data/gemfiles/rails_4.2_nobrainer.gemfile +0 -9
- data/gemfiles/rails_5.0.gemfile +0 -13
- data/gemfiles/rails_5.0_nobrainer.gemfile +0 -9
- data/gemfiles/rails_5.1.gemfile +0 -13
- data/gemfiles/rails_5.2.gemfile +0 -13
- data/spec/database.rb +0 -59
- data/spec/database.yml +0 -3
- data/spec/en.yml +0 -12
- data/spec/en_deprecated_style.yml +0 -10
- data/spec/generators/active_record_generator_spec.rb +0 -53
- data/spec/generators/mongoid_generator_spec.rb +0 -31
- data/spec/generators/no_brainer_generator_spec.rb +0 -29
- data/spec/models/active_record/basic_active_record_two_state_machines_example.rb +0 -25
- data/spec/models/active_record/complex_active_record_example.rb +0 -37
- data/spec/models/active_record/derivate_new_dsl.rb +0 -7
- data/spec/models/active_record/false_state.rb +0 -35
- data/spec/models/active_record/gate.rb +0 -39
- data/spec/models/active_record/instance_level_skip_validation_example.rb +0 -19
- data/spec/models/active_record/invalid_persistor.rb +0 -29
- data/spec/models/active_record/localizer_test_model.rb +0 -34
- data/spec/models/active_record/no_direct_assignment.rb +0 -21
- data/spec/models/active_record/no_scope.rb +0 -21
- data/spec/models/active_record/persisted_state.rb +0 -12
- data/spec/models/active_record/person.rb +0 -23
- data/spec/models/active_record/provided_and_persisted_state.rb +0 -24
- data/spec/models/active_record/reader.rb +0 -7
- data/spec/models/active_record/readme_job.rb +0 -21
- data/spec/models/active_record/silent_persistor.rb +0 -29
- data/spec/models/active_record/simple_new_dsl.rb +0 -32
- data/spec/models/active_record/thief.rb +0 -29
- data/spec/models/active_record/transactor.rb +0 -124
- data/spec/models/active_record/transient.rb +0 -6
- data/spec/models/active_record/validator.rb +0 -118
- data/spec/models/active_record/with_enum.rb +0 -39
- data/spec/models/active_record/with_enum_without_column.rb +0 -38
- data/spec/models/active_record/with_false_enum.rb +0 -31
- data/spec/models/active_record/with_true_enum.rb +0 -39
- data/spec/models/active_record/work.rb +0 -3
- data/spec/models/active_record/worker.rb +0 -2
- data/spec/models/active_record/writer.rb +0 -6
- data/spec/models/basic_two_state_machines_example.rb +0 -25
- data/spec/models/callbacks/basic.rb +0 -98
- data/spec/models/callbacks/basic_multiple.rb +0 -75
- data/spec/models/callbacks/guard_within_block.rb +0 -67
- data/spec/models/callbacks/guard_within_block_multiple.rb +0 -66
- data/spec/models/callbacks/multiple_transitions_transition_guard.rb +0 -66
- data/spec/models/callbacks/multiple_transitions_transition_guard_multiple.rb +0 -65
- data/spec/models/callbacks/private_method.rb +0 -44
- data/spec/models/callbacks/private_method_multiple.rb +0 -44
- data/spec/models/callbacks/with_args.rb +0 -62
- data/spec/models/callbacks/with_args_multiple.rb +0 -61
- data/spec/models/callbacks/with_state_arg.rb +0 -34
- data/spec/models/callbacks/with_state_arg_multiple.rb +0 -29
- data/spec/models/complex_example.rb +0 -222
- data/spec/models/conversation.rb +0 -93
- data/spec/models/default_state.rb +0 -12
- data/spec/models/double_definer.rb +0 -21
- data/spec/models/dynamoid/complex_dynamoid_example.rb +0 -37
- data/spec/models/dynamoid/dynamoid_multiple.rb +0 -18
- data/spec/models/dynamoid/dynamoid_simple.rb +0 -18
- data/spec/models/foo.rb +0 -106
- data/spec/models/foo_callback_multiple.rb +0 -45
- data/spec/models/guard_arguments_check.rb +0 -17
- data/spec/models/guard_with_params.rb +0 -24
- data/spec/models/guard_with_params_multiple.rb +0 -18
- data/spec/models/guardian.rb +0 -58
- data/spec/models/guardian_multiple.rb +0 -48
- data/spec/models/guardian_without_from_specified.rb +0 -18
- data/spec/models/initial_state_proc.rb +0 -31
- data/spec/models/mongoid/complex_mongoid_example.rb +0 -37
- data/spec/models/mongoid/invalid_persistor_mongoid.rb +0 -39
- data/spec/models/mongoid/mongoid_relationships.rb +0 -26
- data/spec/models/mongoid/no_scope_mongoid.rb +0 -21
- data/spec/models/mongoid/silent_persistor_mongoid.rb +0 -39
- data/spec/models/mongoid/simple_mongoid.rb +0 -23
- data/spec/models/mongoid/simple_new_dsl_mongoid.rb +0 -25
- data/spec/models/mongoid/validator_mongoid.rb +0 -100
- data/spec/models/multi_transitioner.rb +0 -34
- data/spec/models/multiple_transitions_that_differ_only_by_guard.rb +0 -31
- data/spec/models/namespaced_multiple_example.rb +0 -42
- data/spec/models/no_initial_state.rb +0 -25
- data/spec/models/nobrainer/complex_no_brainer_example.rb +0 -36
- data/spec/models/nobrainer/invalid_persistor_no_brainer.rb +0 -39
- data/spec/models/nobrainer/no_scope_no_brainer.rb +0 -21
- data/spec/models/nobrainer/nobrainer_relationships.rb +0 -25
- data/spec/models/nobrainer/silent_persistor_no_brainer.rb +0 -39
- data/spec/models/nobrainer/simple_new_dsl_nobrainer.rb +0 -25
- data/spec/models/nobrainer/simple_no_brainer.rb +0 -23
- data/spec/models/nobrainer/validator_no_brainer.rb +0 -98
- data/spec/models/not_auto_loaded/process.rb +0 -21
- data/spec/models/parametrised_event.rb +0 -42
- data/spec/models/parametrised_event_multiple.rb +0 -29
- data/spec/models/process_with_new_dsl.rb +0 -31
- data/spec/models/provided_state.rb +0 -24
- data/spec/models/redis/complex_redis_example.rb +0 -40
- data/spec/models/redis/redis_multiple.rb +0 -20
- data/spec/models/redis/redis_simple.rb +0 -20
- data/spec/models/sequel/complex_sequel_example.rb +0 -46
- data/spec/models/sequel/invalid_persistor.rb +0 -52
- data/spec/models/sequel/sequel_multiple.rb +0 -25
- data/spec/models/sequel/sequel_simple.rb +0 -26
- data/spec/models/sequel/silent_persistor.rb +0 -50
- data/spec/models/sequel/transactor.rb +0 -112
- data/spec/models/sequel/validator.rb +0 -93
- data/spec/models/sequel/worker.rb +0 -12
- data/spec/models/silencer.rb +0 -27
- data/spec/models/simple_custom_example.rb +0 -53
- data/spec/models/simple_example.rb +0 -23
- data/spec/models/simple_example_with_guard_args.rb +0 -17
- data/spec/models/simple_multiple_example.rb +0 -42
- data/spec/models/state_machine_with_failed_event.rb +0 -20
- data/spec/models/states_on_one_line_example.rb +0 -8
- data/spec/models/sub_class.rb +0 -41
- data/spec/models/sub_class_with_more_states.rb +0 -18
- data/spec/models/sub_classing.rb +0 -3
- data/spec/models/super_class.rb +0 -46
- data/spec/models/this_name_better_not_be_in_use.rb +0 -11
- data/spec/models/valid_state_name.rb +0 -23
- data/spec/spec_helper.rb +0 -36
- data/spec/spec_helpers/active_record.rb +0 -8
- data/spec/spec_helpers/dynamoid.rb +0 -35
- data/spec/spec_helpers/mongoid.rb +0 -26
- data/spec/spec_helpers/nobrainer.rb +0 -15
- data/spec/spec_helpers/redis.rb +0 -18
- data/spec/spec_helpers/remove_warnings.rb +0 -1
- data/spec/spec_helpers/sequel.rb +0 -7
- data/spec/unit/abstract_class_spec.rb +0 -27
- data/spec/unit/api_spec.rb +0 -100
- data/spec/unit/basic_two_state_machines_example_spec.rb +0 -10
- data/spec/unit/callback_multiple_spec.rb +0 -304
- data/spec/unit/callbacks_spec.rb +0 -521
- data/spec/unit/complex_example_spec.rb +0 -93
- data/spec/unit/complex_multiple_example_spec.rb +0 -115
- data/spec/unit/edge_cases_spec.rb +0 -16
- data/spec/unit/event_multiple_spec.rb +0 -73
- data/spec/unit/event_naming_spec.rb +0 -16
- data/spec/unit/event_spec.rb +0 -394
- data/spec/unit/exception_spec.rb +0 -11
- data/spec/unit/guard_arguments_check_spec.rb +0 -9
- data/spec/unit/guard_multiple_spec.rb +0 -60
- data/spec/unit/guard_spec.rb +0 -89
- data/spec/unit/guard_with_params_multiple_spec.rb +0 -10
- data/spec/unit/guard_with_params_spec.rb +0 -14
- data/spec/unit/guard_without_from_specified_spec.rb +0 -10
- data/spec/unit/initial_state_multiple_spec.rb +0 -15
- data/spec/unit/initial_state_spec.rb +0 -12
- data/spec/unit/inspection_multiple_spec.rb +0 -201
- data/spec/unit/inspection_spec.rb +0 -149
- data/spec/unit/invoker_spec.rb +0 -189
- data/spec/unit/invokers/base_invoker_spec.rb +0 -72
- data/spec/unit/invokers/class_invoker_spec.rb +0 -95
- data/spec/unit/invokers/literal_invoker_spec.rb +0 -86
- data/spec/unit/invokers/proc_invoker_spec.rb +0 -86
- data/spec/unit/localizer_spec.rb +0 -78
- data/spec/unit/memory_leak_spec.rb +0 -38
- data/spec/unit/multiple_transitions_that_differ_only_by_guard_spec.rb +0 -14
- data/spec/unit/namespaced_multiple_example_spec.rb +0 -75
- data/spec/unit/new_dsl_spec.rb +0 -12
- data/spec/unit/override_warning_spec.rb +0 -94
- data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +0 -618
- data/spec/unit/persistence/active_record_persistence_spec.rb +0 -773
- data/spec/unit/persistence/dynamoid_persistence_multiple_spec.rb +0 -135
- data/spec/unit/persistence/dynamoid_persistence_spec.rb +0 -84
- data/spec/unit/persistence/mongoid_persistence_multiple_spec.rb +0 -200
- data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -165
- data/spec/unit/persistence/no_brainer_persistence_multiple_spec.rb +0 -198
- data/spec/unit/persistence/no_brainer_persistence_spec.rb +0 -158
- data/spec/unit/persistence/redis_persistence_multiple_spec.rb +0 -88
- data/spec/unit/persistence/redis_persistence_spec.rb +0 -53
- data/spec/unit/persistence/sequel_persistence_multiple_spec.rb +0 -148
- data/spec/unit/persistence/sequel_persistence_spec.rb +0 -368
- data/spec/unit/readme_spec.rb +0 -41
- data/spec/unit/reloading_spec.rb +0 -15
- data/spec/unit/rspec_matcher_spec.rb +0 -88
- data/spec/unit/simple_custom_example_spec.rb +0 -39
- data/spec/unit/simple_example_spec.rb +0 -57
- data/spec/unit/simple_multiple_example_spec.rb +0 -91
- data/spec/unit/state_spec.rb +0 -89
- data/spec/unit/states_on_one_line_example_spec.rb +0 -16
- data/spec/unit/subclassing_multiple_spec.rb +0 -74
- data/spec/unit/subclassing_spec.rb +0 -46
- data/spec/unit/transition_spec.rb +0 -436
- data/test/minitest_helper.rb +0 -57
- data/test/unit/minitest_matcher_test.rb +0 -80
@@ -1,222 +0,0 @@
|
|
1
|
-
class ComplexExample
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
attr_accessor :activation_code, :activated_at, :deleted_at
|
5
|
-
|
6
|
-
aasm do
|
7
|
-
state :passive
|
8
|
-
state :pending, :initial => true, :before_enter => :make_activation_code
|
9
|
-
state :active, :before_enter => :do_activate
|
10
|
-
state :suspended
|
11
|
-
state :deleted, :before_enter => :do_delete#, :exit => :do_undelete
|
12
|
-
state :waiting
|
13
|
-
|
14
|
-
event :register do
|
15
|
-
transitions :from => :passive, :to => :pending do
|
16
|
-
guard do
|
17
|
-
can_register?
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
event :activate do
|
23
|
-
transitions :from => :pending, :to => :active
|
24
|
-
end
|
25
|
-
|
26
|
-
event :suspend do
|
27
|
-
transitions :from => [:passive, :pending, :active], :to => :suspended
|
28
|
-
end
|
29
|
-
|
30
|
-
event :delete do
|
31
|
-
transitions :from => [:passive, :pending, :active, :suspended], :to => :deleted
|
32
|
-
end
|
33
|
-
|
34
|
-
# a dummy event that can never happen
|
35
|
-
event :unpassify do
|
36
|
-
transitions :from => :passive, :to => :active, :guard => Proc.new {|u| false }
|
37
|
-
end
|
38
|
-
|
39
|
-
event :unsuspend do
|
40
|
-
transitions :from => :suspended, :to => :active, :guard => Proc.new { has_activated? }
|
41
|
-
transitions :from => :suspended, :to => :pending, :guard => :has_activation_code?
|
42
|
-
transitions :from => :suspended, :to => :passive
|
43
|
-
end
|
44
|
-
|
45
|
-
event :wait do
|
46
|
-
transitions :from => :suspended, :to => :waiting, :guard => :if_polite?
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def initialize
|
51
|
-
# the AR backend uses a before_validate_on_create :aasm_ensure_initial_state
|
52
|
-
# lets do something similar here for testing purposes.
|
53
|
-
aasm.enter_initial_state
|
54
|
-
end
|
55
|
-
|
56
|
-
def make_activation_code
|
57
|
-
@activation_code = 'moo'
|
58
|
-
end
|
59
|
-
|
60
|
-
def do_activate
|
61
|
-
@activated_at = Time.now
|
62
|
-
@activation_code = nil
|
63
|
-
end
|
64
|
-
|
65
|
-
def do_delete
|
66
|
-
@deleted_at = Time.now
|
67
|
-
end
|
68
|
-
|
69
|
-
def do_undelete
|
70
|
-
@deleted_at = false
|
71
|
-
end
|
72
|
-
|
73
|
-
def can_register?
|
74
|
-
true
|
75
|
-
end
|
76
|
-
|
77
|
-
def has_activated?
|
78
|
-
!!@activated_at
|
79
|
-
end
|
80
|
-
|
81
|
-
def has_activation_code?
|
82
|
-
!!@activation_code
|
83
|
-
end
|
84
|
-
|
85
|
-
def if_polite?(phrase = nil)
|
86
|
-
phrase == :please
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
class ComplexExampleMultiple
|
91
|
-
include AASM
|
92
|
-
|
93
|
-
attr_accessor :activation_code, :activated_at, :deleted_at
|
94
|
-
|
95
|
-
aasm(:left) do
|
96
|
-
state :passive
|
97
|
-
state :pending, :initial => true, :before_enter => :make_activation_code
|
98
|
-
state :active, :before_enter => :do_activate
|
99
|
-
state :suspended
|
100
|
-
state :deleted, :before_enter => :do_delete#, :exit => :do_undelete
|
101
|
-
state :waiting
|
102
|
-
|
103
|
-
event :left_register do
|
104
|
-
transitions :from => :passive, :to => :pending do
|
105
|
-
guard do
|
106
|
-
can_register?
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
event :left_activate do
|
112
|
-
transitions :from => :pending, :to => :active
|
113
|
-
end
|
114
|
-
|
115
|
-
event :left_suspend do
|
116
|
-
transitions :from => [:passive, :pending, :active], :to => :suspended
|
117
|
-
end
|
118
|
-
|
119
|
-
event :left_delete do
|
120
|
-
transitions :from => [:passive, :pending, :active, :suspended], :to => :deleted
|
121
|
-
end
|
122
|
-
|
123
|
-
# a dummy event that can never happen
|
124
|
-
event :left_unpassify do
|
125
|
-
transitions :from => :passive, :to => :active, :guard => Proc.new {|u| false }
|
126
|
-
end
|
127
|
-
|
128
|
-
event :left_unsuspend do
|
129
|
-
transitions :from => :suspended, :to => :active, :guard => Proc.new { has_activated? }
|
130
|
-
transitions :from => :suspended, :to => :pending, :guard => :has_activation_code?
|
131
|
-
transitions :from => :suspended, :to => :passive
|
132
|
-
end
|
133
|
-
|
134
|
-
event :left_wait do
|
135
|
-
transitions :from => :suspended, :to => :waiting, :guard => :if_polite?
|
136
|
-
end
|
137
|
-
end
|
138
|
-
|
139
|
-
aasm(:right) do
|
140
|
-
state :passive
|
141
|
-
state :pending, :initial => true, :before_enter => :make_activation_code
|
142
|
-
state :active, :before_enter => :do_activate
|
143
|
-
state :suspended
|
144
|
-
state :deleted, :before_enter => :do_delete#, :exit => :do_undelete
|
145
|
-
state :waiting
|
146
|
-
|
147
|
-
event :right_register do
|
148
|
-
transitions :from => :passive, :to => :pending do
|
149
|
-
guard do
|
150
|
-
can_register?
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
event :right_activate do
|
156
|
-
transitions :from => :pending, :to => :active
|
157
|
-
end
|
158
|
-
|
159
|
-
event :right_suspend do
|
160
|
-
transitions :from => [:passive, :pending, :active], :to => :suspended
|
161
|
-
end
|
162
|
-
|
163
|
-
event :right_delete do
|
164
|
-
transitions :from => [:passive, :pending, :active, :suspended], :to => :deleted
|
165
|
-
end
|
166
|
-
|
167
|
-
# a dummy event that can never happen
|
168
|
-
event :right_unpassify do
|
169
|
-
transitions :from => :passive, :to => :active, :guard => Proc.new {|u| false }
|
170
|
-
end
|
171
|
-
|
172
|
-
event :right_unsuspend do
|
173
|
-
transitions :from => :suspended, :to => :active, :guard => Proc.new { has_activated? }
|
174
|
-
transitions :from => :suspended, :to => :pending, :guard => :has_activation_code?
|
175
|
-
transitions :from => :suspended, :to => :passive
|
176
|
-
end
|
177
|
-
|
178
|
-
event :right_wait do
|
179
|
-
transitions :from => :suspended, :to => :waiting, :guard => :if_polite?
|
180
|
-
end
|
181
|
-
end # right
|
182
|
-
|
183
|
-
def initialize
|
184
|
-
# the AR backend uses a before_validate_on_create :aasm_ensure_initial_state
|
185
|
-
# lets do something similar here for testing purposes.
|
186
|
-
aasm(:left).enter_initial_state
|
187
|
-
aasm(:right).enter_initial_state
|
188
|
-
end
|
189
|
-
|
190
|
-
def make_activation_code
|
191
|
-
@activation_code = @activation_code ? @activation_code + '2' : '1'
|
192
|
-
end
|
193
|
-
|
194
|
-
def do_activate
|
195
|
-
@activated_at = Time.now
|
196
|
-
@activation_code = nil
|
197
|
-
end
|
198
|
-
|
199
|
-
def do_delete
|
200
|
-
@deleted_at = Time.now
|
201
|
-
end
|
202
|
-
|
203
|
-
def do_undelete
|
204
|
-
@deleted_at = false
|
205
|
-
end
|
206
|
-
|
207
|
-
def can_register?
|
208
|
-
true
|
209
|
-
end
|
210
|
-
|
211
|
-
def has_activated?
|
212
|
-
!!@activated_at
|
213
|
-
end
|
214
|
-
|
215
|
-
def has_activation_code?
|
216
|
-
!!@activation_code
|
217
|
-
end
|
218
|
-
|
219
|
-
def if_polite?(phrase = nil)
|
220
|
-
phrase == :please
|
221
|
-
end
|
222
|
-
end
|
data/spec/models/conversation.rb
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
class Conversation
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm do
|
5
|
-
state :needs_attention, :initial => true
|
6
|
-
state :read
|
7
|
-
state :closed
|
8
|
-
state :awaiting_response
|
9
|
-
state :junk
|
10
|
-
|
11
|
-
event :new_message do
|
12
|
-
end
|
13
|
-
|
14
|
-
event :view do
|
15
|
-
transitions :to => :read, :from => [:needs_attention]
|
16
|
-
end
|
17
|
-
|
18
|
-
event :reply do
|
19
|
-
end
|
20
|
-
|
21
|
-
event :close do
|
22
|
-
transitions :to => :closed, :from => [:read, :awaiting_response]
|
23
|
-
end
|
24
|
-
|
25
|
-
event :junk do
|
26
|
-
transitions :to => :junk, :from => [:read]
|
27
|
-
end
|
28
|
-
|
29
|
-
event :unjunk do
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def initialize(persister)
|
34
|
-
@persister = persister
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def aasm_read_state
|
40
|
-
@persister.read_state
|
41
|
-
end
|
42
|
-
|
43
|
-
def aasm_write_state(state)
|
44
|
-
@persister.write_state(state)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
class ConversationMultiple
|
49
|
-
include AASM
|
50
|
-
|
51
|
-
aasm(:left) do
|
52
|
-
state :needs_attention, :initial => true
|
53
|
-
state :read
|
54
|
-
state :closed
|
55
|
-
state :awaiting_response
|
56
|
-
state :junk
|
57
|
-
|
58
|
-
event :new_message do
|
59
|
-
end
|
60
|
-
|
61
|
-
event :view do
|
62
|
-
transitions :to => :read, :from => [:needs_attention]
|
63
|
-
end
|
64
|
-
|
65
|
-
event :reply do
|
66
|
-
end
|
67
|
-
|
68
|
-
event :close do
|
69
|
-
transitions :to => :closed, :from => [:read, :awaiting_response]
|
70
|
-
end
|
71
|
-
|
72
|
-
event :junk do
|
73
|
-
transitions :to => :junk, :from => [:read]
|
74
|
-
end
|
75
|
-
|
76
|
-
event :unjunk do
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def initialize(persister)
|
81
|
-
@persister = persister
|
82
|
-
end
|
83
|
-
|
84
|
-
private
|
85
|
-
|
86
|
-
def aasm_read_state
|
87
|
-
@persister.read_state
|
88
|
-
end
|
89
|
-
|
90
|
-
def aasm_write_state(state)
|
91
|
-
@persister.write_state(state)
|
92
|
-
end
|
93
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
class DefaultState
|
2
|
-
attr_accessor :transient_store, :persisted_store
|
3
|
-
include AASM
|
4
|
-
aasm do
|
5
|
-
state :alpha, :initial => true
|
6
|
-
state :beta
|
7
|
-
state :gamma
|
8
|
-
event :release do
|
9
|
-
transitions :from => [:alpha, :beta, :gamma], :to => :beta
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class DoubleDefiner
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm do
|
5
|
-
state :started
|
6
|
-
state :finished
|
7
|
-
|
8
|
-
event :finish do
|
9
|
-
transitions :from => :started, :to => :finished
|
10
|
-
end
|
11
|
-
|
12
|
-
# simulating a reload
|
13
|
-
state :finished, :before_enter => :do_enter
|
14
|
-
event :finish do
|
15
|
-
transitions :from => :started, :to => :finished, :after => :do_on_transition
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def do_enter; end
|
20
|
-
def do_on_transition; end
|
21
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
class ComplexDynamoidExample
|
2
|
-
include Dynamoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :left
|
6
|
-
field :right
|
7
|
-
|
8
|
-
aasm :left, :column => 'left' do
|
9
|
-
state :one, :initial => true
|
10
|
-
state :two
|
11
|
-
state :three
|
12
|
-
|
13
|
-
event :increment do
|
14
|
-
transitions :from => :one, :to => :two
|
15
|
-
transitions :from => :two, :to => :three
|
16
|
-
end
|
17
|
-
event :reset do
|
18
|
-
transitions :from => :three, :to => :one
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
aasm :right, :column => 'right' do
|
23
|
-
state :alpha, :initial => true
|
24
|
-
state :beta
|
25
|
-
state :gamma
|
26
|
-
|
27
|
-
event :level_up do
|
28
|
-
transitions :from => :alpha, :to => :beta
|
29
|
-
transitions :from => :beta, :to => :gamma
|
30
|
-
end
|
31
|
-
event :level_down do
|
32
|
-
transitions :from => :gamma, :to => :beta
|
33
|
-
transitions :from => :beta, :to => :alpha
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
class DynamoidMultiple
|
2
|
-
include Dynamoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :status
|
6
|
-
|
7
|
-
attr_accessor :default
|
8
|
-
|
9
|
-
aasm :left, :column => :status
|
10
|
-
aasm :left do
|
11
|
-
state :alpha, :initial => true
|
12
|
-
state :beta
|
13
|
-
state :gamma
|
14
|
-
event :release do
|
15
|
-
transitions :from => [:alpha, :beta, :gamma], :to => :beta
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
class DynamoidSimple
|
2
|
-
include Dynamoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :status
|
6
|
-
|
7
|
-
attr_accessor :default
|
8
|
-
|
9
|
-
aasm :column => :status
|
10
|
-
aasm do
|
11
|
-
state :alpha, :initial => true
|
12
|
-
state :beta
|
13
|
-
state :gamma
|
14
|
-
event :release do
|
15
|
-
transitions :from => [:alpha, :beta, :gamma], :to => :beta
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/spec/models/foo.rb
DELETED
@@ -1,106 +0,0 @@
|
|
1
|
-
module Fooable
|
2
|
-
def self.included(base)
|
3
|
-
base.class_eval do
|
4
|
-
aasm do
|
5
|
-
state :open, :initial => true, :before_exit => :before_exit
|
6
|
-
state :closed, :before_enter => :before_enter
|
7
|
-
state :final
|
8
|
-
|
9
|
-
event :close, :success => :success_callback do
|
10
|
-
transitions :from => [:open], :to => [:closed]
|
11
|
-
end
|
12
|
-
|
13
|
-
event :null do
|
14
|
-
transitions :from => [:open], :to => [:closed, :final], :guard => :always_false
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def always_false
|
21
|
-
false
|
22
|
-
end
|
23
|
-
|
24
|
-
def success_callback
|
25
|
-
end
|
26
|
-
|
27
|
-
def before_enter
|
28
|
-
end
|
29
|
-
|
30
|
-
def before_exit
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
class Foo
|
35
|
-
include AASM
|
36
|
-
include Fooable
|
37
|
-
end
|
38
|
-
|
39
|
-
class FooGlobal
|
40
|
-
include AASM
|
41
|
-
include Fooable
|
42
|
-
end
|
43
|
-
|
44
|
-
class FooTwo < Foo
|
45
|
-
include AASM
|
46
|
-
aasm do
|
47
|
-
state :foo
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
class FooMultiple
|
52
|
-
include AASM
|
53
|
-
|
54
|
-
aasm(:left) do
|
55
|
-
state :open, :initial => true, :before_exit => :before_exit
|
56
|
-
state :closed, :before_enter => :before_enter
|
57
|
-
state :final
|
58
|
-
|
59
|
-
event :close, :success => :success_callback do
|
60
|
-
transitions :from => [:open], :to => [:closed]
|
61
|
-
end
|
62
|
-
|
63
|
-
event :null do
|
64
|
-
transitions :from => [:open], :to => [:closed, :final], :guard => :always_false
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
aasm(:right, :column => :right) do
|
69
|
-
state :green, :initial => true
|
70
|
-
state :yellow
|
71
|
-
state :red
|
72
|
-
|
73
|
-
event :green do
|
74
|
-
transitions :from => [:yellow], :to => :green
|
75
|
-
end
|
76
|
-
event :yellow do
|
77
|
-
transitions :from => [:green, :red], :to => :yellow
|
78
|
-
end
|
79
|
-
event :red do
|
80
|
-
transitions :from => [:yellow], :to => :red
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def always_false
|
85
|
-
false
|
86
|
-
end
|
87
|
-
|
88
|
-
def success_callback
|
89
|
-
end
|
90
|
-
|
91
|
-
def before_enter
|
92
|
-
end
|
93
|
-
def before_exit
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
class FooTwoMultiple < FooMultiple
|
98
|
-
include AASM
|
99
|
-
aasm(:left) do
|
100
|
-
state :foo
|
101
|
-
end
|
102
|
-
|
103
|
-
aasm(:right) do
|
104
|
-
state :bar
|
105
|
-
end
|
106
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
class FooCallbackMultiple
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm(:left) do
|
5
|
-
state :open, :initial => true, :before_exit => :before_exit
|
6
|
-
state :closed, :before_enter => :before_enter
|
7
|
-
state :final
|
8
|
-
|
9
|
-
event :close, :success => :success_callback do
|
10
|
-
transitions :from => [:open], :to => [:closed]
|
11
|
-
end
|
12
|
-
|
13
|
-
event :null do
|
14
|
-
transitions :from => [:open], :to => [:closed, :final], :guard => :always_false
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
aasm(:right, :column => :right) do
|
19
|
-
state :green, :initial => true
|
20
|
-
state :yellow
|
21
|
-
state :red
|
22
|
-
|
23
|
-
event :green do
|
24
|
-
transitions :from => [:yellow], :to => :green
|
25
|
-
end
|
26
|
-
event :yellow do
|
27
|
-
transitions :from => [:green, :red], :to => :yellow
|
28
|
-
end
|
29
|
-
event :red do
|
30
|
-
transitions :from => [:yellow], :to => :red
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def always_false
|
35
|
-
false
|
36
|
-
end
|
37
|
-
|
38
|
-
def success_callback
|
39
|
-
end
|
40
|
-
|
41
|
-
def before_enter
|
42
|
-
end
|
43
|
-
def before_exit
|
44
|
-
end
|
45
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
class GuardArgumentsCheck
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm do
|
5
|
-
state :new, :reviewed, :finalized
|
6
|
-
|
7
|
-
event :mark_as_reviewed,
|
8
|
-
:guard => proc { |*args| arguments_list(*args) } do
|
9
|
-
transitions :from => :new, :to => :reviewed
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def arguments_list(arg1, arg2)
|
14
|
-
return false unless arg1.nil?
|
15
|
-
true
|
16
|
-
end
|
17
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
class GuardWithParams
|
2
|
-
include AASM
|
3
|
-
aasm do
|
4
|
-
state :new, :reviewed, :finalized
|
5
|
-
|
6
|
-
event :mark_as_reviewed do
|
7
|
-
transitions :from => :new, :to => :reviewed, :guards => [:user_is_manager?]
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def user_is_manager?(user)
|
12
|
-
ok = false
|
13
|
-
if user && user.has_role?(:manager)
|
14
|
-
ok = true
|
15
|
-
end
|
16
|
-
return ok
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
class GuardParamsClass
|
21
|
-
def has_role?(role)
|
22
|
-
true
|
23
|
-
end
|
24
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
class GuardWithParamsMultiple
|
2
|
-
include AASM
|
3
|
-
aasm(:left) do
|
4
|
-
state :new, :reviewed, :finalized
|
5
|
-
|
6
|
-
event :mark_as_reviewed do
|
7
|
-
transitions :from => :new, :to => :reviewed, :guards => [:user_is_manager?]
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def user_is_manager?(user)
|
12
|
-
ok = false
|
13
|
-
if user.has_role? :manager
|
14
|
-
ok = true
|
15
|
-
end
|
16
|
-
return ok
|
17
|
-
end
|
18
|
-
end
|
data/spec/models/guardian.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
class Guardian
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
def inner_guard(options={})
|
5
|
-
end
|
6
|
-
|
7
|
-
aasm do
|
8
|
-
state :alpha, :initial => true
|
9
|
-
state :beta
|
10
|
-
|
11
|
-
event :use_one_guard_that_succeeds do
|
12
|
-
transitions :from => :alpha, :to => :beta, :guard => :succeed
|
13
|
-
end
|
14
|
-
event :use_one_guard_that_fails do
|
15
|
-
transitions :from => :alpha, :to => :beta, :guard => :fail
|
16
|
-
end
|
17
|
-
|
18
|
-
event :use_proc_guard_with_params do
|
19
|
-
transitions :from => :alpha, :to => :beta, :guard => Proc.new { |options={}| inner_guard(options) }
|
20
|
-
end
|
21
|
-
event :use_lambda_guard_with_params do
|
22
|
-
transitions :from => :alpha, :to => :beta, :guard => lambda { |options={}| inner_guard(options) }
|
23
|
-
end
|
24
|
-
|
25
|
-
event :use_guards_that_succeed do
|
26
|
-
transitions :from => :alpha, :to => :beta, :guards => [:succeed, :another_succeed]
|
27
|
-
end
|
28
|
-
event :use_guards_where_the_first_fails do
|
29
|
-
transitions :from => :alpha, :to => :beta, :guards => [:succeed, :fail]
|
30
|
-
end
|
31
|
-
event :use_guards_where_the_second_fails do
|
32
|
-
transitions :from => :alpha, :to => :beta, :guards => [:fail, :succeed]
|
33
|
-
end
|
34
|
-
|
35
|
-
event :use_event_guards_that_succeed, :guards => [:succeed, :another_succeed] do
|
36
|
-
transitions :from => :alpha, :to => :beta
|
37
|
-
end
|
38
|
-
event :use_event_and_transition_guards_that_succeed, :guards => [:succeed, :another_succeed] do
|
39
|
-
transitions :from => :alpha, :to => :beta, :guards => [:more_succeed]
|
40
|
-
end
|
41
|
-
event :use_event_guards_where_the_first_fails, :guards => [:succeed, :fail] do
|
42
|
-
transitions :from => :alpha, :to => :beta
|
43
|
-
end
|
44
|
-
event :use_event_guards_where_the_second_fails, :guards => [:fail, :succeed] do
|
45
|
-
transitions :from => :alpha, :to => :beta, :guard => :another_succeed
|
46
|
-
end
|
47
|
-
event :use_event_and_transition_guards_where_third_fails, :guards => [:succeed, :another_succeed] do
|
48
|
-
transitions :from => :alpha, :to => :beta, :guards => [:fail]
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def fail; false; end
|
53
|
-
|
54
|
-
def succeed; true; end
|
55
|
-
def another_succeed; true; end
|
56
|
-
def more_succeed; true; end
|
57
|
-
|
58
|
-
end
|