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.
Files changed (230) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +108 -17
  3. data/lib/aasm/base.rb +44 -12
  4. data/lib/aasm/configuration.rb +3 -0
  5. data/lib/aasm/core/event.rb +12 -6
  6. data/lib/aasm/core/invokers/class_invoker.rb +1 -1
  7. data/lib/aasm/core/invokers/literal_invoker.rb +3 -1
  8. data/lib/aasm/core/state.rb +6 -5
  9. data/lib/aasm/core/transition.rb +1 -1
  10. data/lib/aasm/dsl_helper.rb +24 -22
  11. data/lib/aasm/errors.rb +1 -0
  12. data/lib/aasm/instance_base.rb +15 -4
  13. data/lib/aasm/localizer.rb +13 -3
  14. data/lib/aasm/persistence/active_record_persistence.rb +18 -0
  15. data/lib/aasm/persistence/base.rb +13 -2
  16. data/lib/aasm/persistence/orm.rb +23 -19
  17. data/lib/aasm/version.rb +1 -1
  18. data/lib/aasm.rb +0 -2
  19. data/lib/generators/aasm/orm_helpers.rb +1 -1
  20. data/lib/generators/active_record/templates/migration.rb +1 -1
  21. metadata +9 -397
  22. data/.document +0 -6
  23. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -27
  24. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  25. data/.gitignore +0 -20
  26. data/.travis.yml +0 -100
  27. data/API +0 -34
  28. data/Appraisals +0 -71
  29. data/CHANGELOG.md +0 -431
  30. data/CODE_OF_CONDUCT.md +0 -13
  31. data/CONTRIBUTING.md +0 -24
  32. data/Dockerfile +0 -44
  33. data/Gemfile +0 -6
  34. data/Gemfile.lock_old +0 -151
  35. data/HOWTO +0 -12
  36. data/PLANNED_CHANGES.md +0 -11
  37. data/README_FROM_VERSION_3_TO_4.md +0 -240
  38. data/Rakefile +0 -31
  39. data/TESTING.md +0 -25
  40. data/aasm.gemspec +0 -37
  41. data/callbacks.txt +0 -51
  42. data/docker-compose.yml +0 -40
  43. data/gemfiles/norails.gemfile +0 -10
  44. data/gemfiles/rails_3.2.gemfile +0 -14
  45. data/gemfiles/rails_4.2.gemfile +0 -16
  46. data/gemfiles/rails_4.2_mongoid_5.gemfile +0 -11
  47. data/gemfiles/rails_4.2_nobrainer.gemfile +0 -9
  48. data/gemfiles/rails_5.0.gemfile +0 -13
  49. data/gemfiles/rails_5.0_nobrainer.gemfile +0 -9
  50. data/gemfiles/rails_5.1.gemfile +0 -13
  51. data/gemfiles/rails_5.2.gemfile +0 -13
  52. data/spec/database.rb +0 -59
  53. data/spec/database.yml +0 -3
  54. data/spec/en.yml +0 -12
  55. data/spec/en_deprecated_style.yml +0 -10
  56. data/spec/generators/active_record_generator_spec.rb +0 -53
  57. data/spec/generators/mongoid_generator_spec.rb +0 -31
  58. data/spec/generators/no_brainer_generator_spec.rb +0 -29
  59. data/spec/models/active_record/basic_active_record_two_state_machines_example.rb +0 -25
  60. data/spec/models/active_record/complex_active_record_example.rb +0 -37
  61. data/spec/models/active_record/derivate_new_dsl.rb +0 -7
  62. data/spec/models/active_record/false_state.rb +0 -35
  63. data/spec/models/active_record/gate.rb +0 -39
  64. data/spec/models/active_record/instance_level_skip_validation_example.rb +0 -19
  65. data/spec/models/active_record/invalid_persistor.rb +0 -29
  66. data/spec/models/active_record/localizer_test_model.rb +0 -34
  67. data/spec/models/active_record/no_direct_assignment.rb +0 -21
  68. data/spec/models/active_record/no_scope.rb +0 -21
  69. data/spec/models/active_record/persisted_state.rb +0 -12
  70. data/spec/models/active_record/person.rb +0 -23
  71. data/spec/models/active_record/provided_and_persisted_state.rb +0 -24
  72. data/spec/models/active_record/reader.rb +0 -7
  73. data/spec/models/active_record/readme_job.rb +0 -21
  74. data/spec/models/active_record/silent_persistor.rb +0 -29
  75. data/spec/models/active_record/simple_new_dsl.rb +0 -32
  76. data/spec/models/active_record/thief.rb +0 -29
  77. data/spec/models/active_record/transactor.rb +0 -124
  78. data/spec/models/active_record/transient.rb +0 -6
  79. data/spec/models/active_record/validator.rb +0 -118
  80. data/spec/models/active_record/with_enum.rb +0 -39
  81. data/spec/models/active_record/with_enum_without_column.rb +0 -38
  82. data/spec/models/active_record/with_false_enum.rb +0 -31
  83. data/spec/models/active_record/with_true_enum.rb +0 -39
  84. data/spec/models/active_record/work.rb +0 -3
  85. data/spec/models/active_record/worker.rb +0 -2
  86. data/spec/models/active_record/writer.rb +0 -6
  87. data/spec/models/basic_two_state_machines_example.rb +0 -25
  88. data/spec/models/callbacks/basic.rb +0 -98
  89. data/spec/models/callbacks/basic_multiple.rb +0 -75
  90. data/spec/models/callbacks/guard_within_block.rb +0 -67
  91. data/spec/models/callbacks/guard_within_block_multiple.rb +0 -66
  92. data/spec/models/callbacks/multiple_transitions_transition_guard.rb +0 -66
  93. data/spec/models/callbacks/multiple_transitions_transition_guard_multiple.rb +0 -65
  94. data/spec/models/callbacks/private_method.rb +0 -44
  95. data/spec/models/callbacks/private_method_multiple.rb +0 -44
  96. data/spec/models/callbacks/with_args.rb +0 -62
  97. data/spec/models/callbacks/with_args_multiple.rb +0 -61
  98. data/spec/models/callbacks/with_state_arg.rb +0 -34
  99. data/spec/models/callbacks/with_state_arg_multiple.rb +0 -29
  100. data/spec/models/complex_example.rb +0 -222
  101. data/spec/models/conversation.rb +0 -93
  102. data/spec/models/default_state.rb +0 -12
  103. data/spec/models/double_definer.rb +0 -21
  104. data/spec/models/dynamoid/complex_dynamoid_example.rb +0 -37
  105. data/spec/models/dynamoid/dynamoid_multiple.rb +0 -18
  106. data/spec/models/dynamoid/dynamoid_simple.rb +0 -18
  107. data/spec/models/foo.rb +0 -106
  108. data/spec/models/foo_callback_multiple.rb +0 -45
  109. data/spec/models/guard_arguments_check.rb +0 -17
  110. data/spec/models/guard_with_params.rb +0 -24
  111. data/spec/models/guard_with_params_multiple.rb +0 -18
  112. data/spec/models/guardian.rb +0 -58
  113. data/spec/models/guardian_multiple.rb +0 -48
  114. data/spec/models/guardian_without_from_specified.rb +0 -18
  115. data/spec/models/initial_state_proc.rb +0 -31
  116. data/spec/models/mongoid/complex_mongoid_example.rb +0 -37
  117. data/spec/models/mongoid/invalid_persistor_mongoid.rb +0 -39
  118. data/spec/models/mongoid/mongoid_relationships.rb +0 -26
  119. data/spec/models/mongoid/no_scope_mongoid.rb +0 -21
  120. data/spec/models/mongoid/silent_persistor_mongoid.rb +0 -39
  121. data/spec/models/mongoid/simple_mongoid.rb +0 -23
  122. data/spec/models/mongoid/simple_new_dsl_mongoid.rb +0 -25
  123. data/spec/models/mongoid/validator_mongoid.rb +0 -100
  124. data/spec/models/multi_transitioner.rb +0 -34
  125. data/spec/models/multiple_transitions_that_differ_only_by_guard.rb +0 -31
  126. data/spec/models/namespaced_multiple_example.rb +0 -42
  127. data/spec/models/no_initial_state.rb +0 -25
  128. data/spec/models/nobrainer/complex_no_brainer_example.rb +0 -36
  129. data/spec/models/nobrainer/invalid_persistor_no_brainer.rb +0 -39
  130. data/spec/models/nobrainer/no_scope_no_brainer.rb +0 -21
  131. data/spec/models/nobrainer/nobrainer_relationships.rb +0 -25
  132. data/spec/models/nobrainer/silent_persistor_no_brainer.rb +0 -39
  133. data/spec/models/nobrainer/simple_new_dsl_nobrainer.rb +0 -25
  134. data/spec/models/nobrainer/simple_no_brainer.rb +0 -23
  135. data/spec/models/nobrainer/validator_no_brainer.rb +0 -98
  136. data/spec/models/not_auto_loaded/process.rb +0 -21
  137. data/spec/models/parametrised_event.rb +0 -42
  138. data/spec/models/parametrised_event_multiple.rb +0 -29
  139. data/spec/models/process_with_new_dsl.rb +0 -31
  140. data/spec/models/provided_state.rb +0 -24
  141. data/spec/models/redis/complex_redis_example.rb +0 -40
  142. data/spec/models/redis/redis_multiple.rb +0 -20
  143. data/spec/models/redis/redis_simple.rb +0 -20
  144. data/spec/models/sequel/complex_sequel_example.rb +0 -46
  145. data/spec/models/sequel/invalid_persistor.rb +0 -52
  146. data/spec/models/sequel/sequel_multiple.rb +0 -25
  147. data/spec/models/sequel/sequel_simple.rb +0 -26
  148. data/spec/models/sequel/silent_persistor.rb +0 -50
  149. data/spec/models/sequel/transactor.rb +0 -112
  150. data/spec/models/sequel/validator.rb +0 -93
  151. data/spec/models/sequel/worker.rb +0 -12
  152. data/spec/models/silencer.rb +0 -27
  153. data/spec/models/simple_custom_example.rb +0 -53
  154. data/spec/models/simple_example.rb +0 -23
  155. data/spec/models/simple_example_with_guard_args.rb +0 -17
  156. data/spec/models/simple_multiple_example.rb +0 -42
  157. data/spec/models/state_machine_with_failed_event.rb +0 -20
  158. data/spec/models/states_on_one_line_example.rb +0 -8
  159. data/spec/models/sub_class.rb +0 -41
  160. data/spec/models/sub_class_with_more_states.rb +0 -18
  161. data/spec/models/sub_classing.rb +0 -3
  162. data/spec/models/super_class.rb +0 -46
  163. data/spec/models/this_name_better_not_be_in_use.rb +0 -11
  164. data/spec/models/valid_state_name.rb +0 -23
  165. data/spec/spec_helper.rb +0 -36
  166. data/spec/spec_helpers/active_record.rb +0 -8
  167. data/spec/spec_helpers/dynamoid.rb +0 -35
  168. data/spec/spec_helpers/mongoid.rb +0 -26
  169. data/spec/spec_helpers/nobrainer.rb +0 -15
  170. data/spec/spec_helpers/redis.rb +0 -18
  171. data/spec/spec_helpers/remove_warnings.rb +0 -1
  172. data/spec/spec_helpers/sequel.rb +0 -7
  173. data/spec/unit/abstract_class_spec.rb +0 -27
  174. data/spec/unit/api_spec.rb +0 -100
  175. data/spec/unit/basic_two_state_machines_example_spec.rb +0 -10
  176. data/spec/unit/callback_multiple_spec.rb +0 -304
  177. data/spec/unit/callbacks_spec.rb +0 -521
  178. data/spec/unit/complex_example_spec.rb +0 -93
  179. data/spec/unit/complex_multiple_example_spec.rb +0 -115
  180. data/spec/unit/edge_cases_spec.rb +0 -16
  181. data/spec/unit/event_multiple_spec.rb +0 -73
  182. data/spec/unit/event_naming_spec.rb +0 -16
  183. data/spec/unit/event_spec.rb +0 -394
  184. data/spec/unit/exception_spec.rb +0 -11
  185. data/spec/unit/guard_arguments_check_spec.rb +0 -9
  186. data/spec/unit/guard_multiple_spec.rb +0 -60
  187. data/spec/unit/guard_spec.rb +0 -89
  188. data/spec/unit/guard_with_params_multiple_spec.rb +0 -10
  189. data/spec/unit/guard_with_params_spec.rb +0 -14
  190. data/spec/unit/guard_without_from_specified_spec.rb +0 -10
  191. data/spec/unit/initial_state_multiple_spec.rb +0 -15
  192. data/spec/unit/initial_state_spec.rb +0 -12
  193. data/spec/unit/inspection_multiple_spec.rb +0 -201
  194. data/spec/unit/inspection_spec.rb +0 -149
  195. data/spec/unit/invoker_spec.rb +0 -189
  196. data/spec/unit/invokers/base_invoker_spec.rb +0 -72
  197. data/spec/unit/invokers/class_invoker_spec.rb +0 -95
  198. data/spec/unit/invokers/literal_invoker_spec.rb +0 -86
  199. data/spec/unit/invokers/proc_invoker_spec.rb +0 -86
  200. data/spec/unit/localizer_spec.rb +0 -78
  201. data/spec/unit/memory_leak_spec.rb +0 -38
  202. data/spec/unit/multiple_transitions_that_differ_only_by_guard_spec.rb +0 -14
  203. data/spec/unit/namespaced_multiple_example_spec.rb +0 -75
  204. data/spec/unit/new_dsl_spec.rb +0 -12
  205. data/spec/unit/override_warning_spec.rb +0 -94
  206. data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +0 -618
  207. data/spec/unit/persistence/active_record_persistence_spec.rb +0 -773
  208. data/spec/unit/persistence/dynamoid_persistence_multiple_spec.rb +0 -135
  209. data/spec/unit/persistence/dynamoid_persistence_spec.rb +0 -84
  210. data/spec/unit/persistence/mongoid_persistence_multiple_spec.rb +0 -200
  211. data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -165
  212. data/spec/unit/persistence/no_brainer_persistence_multiple_spec.rb +0 -198
  213. data/spec/unit/persistence/no_brainer_persistence_spec.rb +0 -158
  214. data/spec/unit/persistence/redis_persistence_multiple_spec.rb +0 -88
  215. data/spec/unit/persistence/redis_persistence_spec.rb +0 -53
  216. data/spec/unit/persistence/sequel_persistence_multiple_spec.rb +0 -148
  217. data/spec/unit/persistence/sequel_persistence_spec.rb +0 -368
  218. data/spec/unit/readme_spec.rb +0 -41
  219. data/spec/unit/reloading_spec.rb +0 -15
  220. data/spec/unit/rspec_matcher_spec.rb +0 -88
  221. data/spec/unit/simple_custom_example_spec.rb +0 -39
  222. data/spec/unit/simple_example_spec.rb +0 -57
  223. data/spec/unit/simple_multiple_example_spec.rb +0 -91
  224. data/spec/unit/state_spec.rb +0 -89
  225. data/spec/unit/states_on_one_line_example_spec.rb +0 -16
  226. data/spec/unit/subclassing_multiple_spec.rb +0 -74
  227. data/spec/unit/subclassing_spec.rb +0 -46
  228. data/spec/unit/transition_spec.rb +0 -436
  229. data/test/minitest_helper.rb +0 -57
  230. 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
@@ -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
@@ -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