aasm 5.0.0 → 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 (231) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +243 -118
  3. data/lib/aasm/aasm.rb +29 -27
  4. data/lib/aasm/base.rb +61 -11
  5. data/lib/aasm/configuration.rb +3 -0
  6. data/lib/aasm/core/event.rb +21 -9
  7. data/lib/aasm/core/invokers/class_invoker.rb +1 -1
  8. data/lib/aasm/core/invokers/literal_invoker.rb +3 -1
  9. data/lib/aasm/core/state.rb +6 -5
  10. data/lib/aasm/core/transition.rb +1 -1
  11. data/lib/aasm/dsl_helper.rb +24 -22
  12. data/lib/aasm/errors.rb +3 -1
  13. data/lib/aasm/instance_base.rb +28 -5
  14. data/lib/aasm/localizer.rb +13 -3
  15. data/lib/aasm/persistence/active_record_persistence.rb +25 -5
  16. data/lib/aasm/persistence/base.rb +14 -3
  17. data/lib/aasm/persistence/core_data_query_persistence.rb +2 -1
  18. data/lib/aasm/persistence/dynamoid_persistence.rb +1 -1
  19. data/lib/aasm/persistence/mongoid_persistence.rb +1 -1
  20. data/lib/aasm/persistence/no_brainer_persistence.rb +1 -1
  21. data/lib/aasm/persistence/orm.rb +23 -19
  22. data/lib/aasm/persistence/redis_persistence.rb +1 -1
  23. data/lib/aasm/rspec/transition_from.rb +5 -1
  24. data/lib/aasm/version.rb +1 -1
  25. data/lib/aasm.rb +0 -2
  26. data/lib/generators/aasm/orm_helpers.rb +7 -1
  27. data/lib/generators/active_record/aasm_generator.rb +3 -1
  28. data/lib/generators/active_record/templates/migration.rb +1 -1
  29. metadata +35 -385
  30. data/.document +0 -6
  31. data/.gitignore +0 -20
  32. data/.travis.yml +0 -54
  33. data/API +0 -34
  34. data/Appraisals +0 -66
  35. data/CHANGELOG.md +0 -377
  36. data/CODE_OF_CONDUCT.md +0 -13
  37. data/CONTRIBUTING.md +0 -24
  38. data/Dockerfile +0 -44
  39. data/Gemfile +0 -6
  40. data/Gemfile.lock_old +0 -151
  41. data/HOWTO +0 -12
  42. data/PLANNED_CHANGES.md +0 -11
  43. data/README_FROM_VERSION_3_TO_4.md +0 -240
  44. data/Rakefile +0 -31
  45. data/TESTING.md +0 -25
  46. data/aasm.gemspec +0 -35
  47. data/callbacks.txt +0 -51
  48. data/docker-compose.yml +0 -40
  49. data/gemfiles/rails_3.2.gemfile +0 -13
  50. data/gemfiles/rails_4.0.gemfile +0 -15
  51. data/gemfiles/rails_4.2.gemfile +0 -16
  52. data/gemfiles/rails_4.2_mongoid_5.gemfile +0 -11
  53. data/gemfiles/rails_4.2_nobrainer.gemfile +0 -9
  54. data/gemfiles/rails_5.0.gemfile +0 -13
  55. data/gemfiles/rails_5.0_nobrainer.gemfile +0 -9
  56. data/gemfiles/rails_5.1.gemfile +0 -13
  57. data/spec/database.rb +0 -44
  58. data/spec/database.yml +0 -3
  59. data/spec/en.yml +0 -12
  60. data/spec/en_deprecated_style.yml +0 -10
  61. data/spec/generators/active_record_generator_spec.rb +0 -47
  62. data/spec/generators/mongoid_generator_spec.rb +0 -31
  63. data/spec/generators/no_brainer_generator_spec.rb +0 -29
  64. data/spec/models/active_record/basic_active_record_two_state_machines_example.rb +0 -25
  65. data/spec/models/active_record/complex_active_record_example.rb +0 -37
  66. data/spec/models/active_record/derivate_new_dsl.rb +0 -7
  67. data/spec/models/active_record/false_state.rb +0 -35
  68. data/spec/models/active_record/gate.rb +0 -39
  69. data/spec/models/active_record/invalid_persistor.rb +0 -29
  70. data/spec/models/active_record/localizer_test_model.rb +0 -34
  71. data/spec/models/active_record/no_direct_assignment.rb +0 -21
  72. data/spec/models/active_record/no_scope.rb +0 -21
  73. data/spec/models/active_record/persisted_state.rb +0 -12
  74. data/spec/models/active_record/provided_and_persisted_state.rb +0 -24
  75. data/spec/models/active_record/reader.rb +0 -7
  76. data/spec/models/active_record/readme_job.rb +0 -21
  77. data/spec/models/active_record/silent_persistor.rb +0 -29
  78. data/spec/models/active_record/simple_new_dsl.rb +0 -17
  79. data/spec/models/active_record/thief.rb +0 -29
  80. data/spec/models/active_record/transactor.rb +0 -124
  81. data/spec/models/active_record/transient.rb +0 -6
  82. data/spec/models/active_record/validator.rb +0 -118
  83. data/spec/models/active_record/with_enum.rb +0 -39
  84. data/spec/models/active_record/with_enum_without_column.rb +0 -38
  85. data/spec/models/active_record/with_false_enum.rb +0 -31
  86. data/spec/models/active_record/with_true_enum.rb +0 -39
  87. data/spec/models/active_record/worker.rb +0 -2
  88. data/spec/models/active_record/writer.rb +0 -6
  89. data/spec/models/basic_two_state_machines_example.rb +0 -25
  90. data/spec/models/callbacks/basic.rb +0 -98
  91. data/spec/models/callbacks/basic_multiple.rb +0 -75
  92. data/spec/models/callbacks/guard_within_block.rb +0 -67
  93. data/spec/models/callbacks/guard_within_block_multiple.rb +0 -66
  94. data/spec/models/callbacks/multiple_transitions_transition_guard.rb +0 -66
  95. data/spec/models/callbacks/multiple_transitions_transition_guard_multiple.rb +0 -65
  96. data/spec/models/callbacks/private_method.rb +0 -44
  97. data/spec/models/callbacks/private_method_multiple.rb +0 -44
  98. data/spec/models/callbacks/with_args.rb +0 -62
  99. data/spec/models/callbacks/with_args_multiple.rb +0 -61
  100. data/spec/models/callbacks/with_state_arg.rb +0 -30
  101. data/spec/models/callbacks/with_state_arg_multiple.rb +0 -26
  102. data/spec/models/complex_example.rb +0 -222
  103. data/spec/models/conversation.rb +0 -93
  104. data/spec/models/default_state.rb +0 -12
  105. data/spec/models/double_definer.rb +0 -21
  106. data/spec/models/dynamoid/complex_dynamoid_example.rb +0 -37
  107. data/spec/models/dynamoid/dynamoid_multiple.rb +0 -18
  108. data/spec/models/dynamoid/dynamoid_simple.rb +0 -18
  109. data/spec/models/foo.rb +0 -106
  110. data/spec/models/foo_callback_multiple.rb +0 -45
  111. data/spec/models/guard_arguments_check.rb +0 -17
  112. data/spec/models/guard_with_params.rb +0 -24
  113. data/spec/models/guard_with_params_multiple.rb +0 -18
  114. data/spec/models/guardian.rb +0 -58
  115. data/spec/models/guardian_multiple.rb +0 -48
  116. data/spec/models/guardian_without_from_specified.rb +0 -18
  117. data/spec/models/initial_state_proc.rb +0 -31
  118. data/spec/models/mongoid/complex_mongoid_example.rb +0 -37
  119. data/spec/models/mongoid/invalid_persistor_mongoid.rb +0 -39
  120. data/spec/models/mongoid/mongoid_relationships.rb +0 -26
  121. data/spec/models/mongoid/no_scope_mongoid.rb +0 -21
  122. data/spec/models/mongoid/silent_persistor_mongoid.rb +0 -39
  123. data/spec/models/mongoid/simple_mongoid.rb +0 -23
  124. data/spec/models/mongoid/simple_new_dsl_mongoid.rb +0 -25
  125. data/spec/models/mongoid/validator_mongoid.rb +0 -100
  126. data/spec/models/multi_transitioner.rb +0 -34
  127. data/spec/models/multiple_transitions_that_differ_only_by_guard.rb +0 -31
  128. data/spec/models/namespaced_multiple_example.rb +0 -42
  129. data/spec/models/no_initial_state.rb +0 -25
  130. data/spec/models/nobrainer/complex_no_brainer_example.rb +0 -36
  131. data/spec/models/nobrainer/invalid_persistor_no_brainer.rb +0 -39
  132. data/spec/models/nobrainer/no_scope_no_brainer.rb +0 -21
  133. data/spec/models/nobrainer/nobrainer_relationships.rb +0 -25
  134. data/spec/models/nobrainer/silent_persistor_no_brainer.rb +0 -39
  135. data/spec/models/nobrainer/simple_new_dsl_nobrainer.rb +0 -25
  136. data/spec/models/nobrainer/simple_no_brainer.rb +0 -23
  137. data/spec/models/nobrainer/validator_no_brainer.rb +0 -98
  138. data/spec/models/not_auto_loaded/process.rb +0 -21
  139. data/spec/models/parametrised_event.rb +0 -42
  140. data/spec/models/parametrised_event_multiple.rb +0 -29
  141. data/spec/models/process_with_new_dsl.rb +0 -31
  142. data/spec/models/provided_state.rb +0 -24
  143. data/spec/models/redis/complex_redis_example.rb +0 -40
  144. data/spec/models/redis/redis_multiple.rb +0 -20
  145. data/spec/models/redis/redis_simple.rb +0 -20
  146. data/spec/models/sequel/complex_sequel_example.rb +0 -46
  147. data/spec/models/sequel/invalid_persistor.rb +0 -52
  148. data/spec/models/sequel/sequel_multiple.rb +0 -25
  149. data/spec/models/sequel/sequel_simple.rb +0 -26
  150. data/spec/models/sequel/silent_persistor.rb +0 -50
  151. data/spec/models/sequel/transactor.rb +0 -112
  152. data/spec/models/sequel/validator.rb +0 -93
  153. data/spec/models/sequel/worker.rb +0 -12
  154. data/spec/models/silencer.rb +0 -27
  155. data/spec/models/simple_custom_example.rb +0 -53
  156. data/spec/models/simple_example.rb +0 -17
  157. data/spec/models/simple_example_with_guard_args.rb +0 -17
  158. data/spec/models/simple_multiple_example.rb +0 -42
  159. data/spec/models/state_machine_with_failed_event.rb +0 -20
  160. data/spec/models/states_on_one_line_example.rb +0 -8
  161. data/spec/models/sub_class.rb +0 -41
  162. data/spec/models/sub_class_with_more_states.rb +0 -18
  163. data/spec/models/sub_classing.rb +0 -3
  164. data/spec/models/super_class.rb +0 -46
  165. data/spec/models/this_name_better_not_be_in_use.rb +0 -11
  166. data/spec/models/valid_state_name.rb +0 -23
  167. data/spec/spec_helper.rb +0 -26
  168. data/spec/spec_helpers/active_record.rb +0 -8
  169. data/spec/spec_helpers/dynamoid.rb +0 -35
  170. data/spec/spec_helpers/mongoid.rb +0 -26
  171. data/spec/spec_helpers/nobrainer.rb +0 -15
  172. data/spec/spec_helpers/redis.rb +0 -18
  173. data/spec/spec_helpers/remove_warnings.rb +0 -1
  174. data/spec/spec_helpers/sequel.rb +0 -7
  175. data/spec/unit/api_spec.rb +0 -100
  176. data/spec/unit/basic_two_state_machines_example_spec.rb +0 -10
  177. data/spec/unit/callback_multiple_spec.rb +0 -300
  178. data/spec/unit/callbacks_spec.rb +0 -491
  179. data/spec/unit/complex_example_spec.rb +0 -94
  180. data/spec/unit/complex_multiple_example_spec.rb +0 -115
  181. data/spec/unit/edge_cases_spec.rb +0 -16
  182. data/spec/unit/event_multiple_spec.rb +0 -73
  183. data/spec/unit/event_naming_spec.rb +0 -16
  184. data/spec/unit/event_spec.rb +0 -381
  185. data/spec/unit/exception_spec.rb +0 -11
  186. data/spec/unit/guard_arguments_check_spec.rb +0 -9
  187. data/spec/unit/guard_multiple_spec.rb +0 -60
  188. data/spec/unit/guard_spec.rb +0 -89
  189. data/spec/unit/guard_with_params_multiple_spec.rb +0 -10
  190. data/spec/unit/guard_with_params_spec.rb +0 -14
  191. data/spec/unit/guard_without_from_specified_spec.rb +0 -10
  192. data/spec/unit/initial_state_multiple_spec.rb +0 -15
  193. data/spec/unit/initial_state_spec.rb +0 -12
  194. data/spec/unit/inspection_multiple_spec.rb +0 -201
  195. data/spec/unit/inspection_spec.rb +0 -149
  196. data/spec/unit/invoker_spec.rb +0 -189
  197. data/spec/unit/invokers/base_invoker_spec.rb +0 -72
  198. data/spec/unit/invokers/class_invoker_spec.rb +0 -95
  199. data/spec/unit/invokers/literal_invoker_spec.rb +0 -86
  200. data/spec/unit/invokers/proc_invoker_spec.rb +0 -86
  201. data/spec/unit/localizer_spec.rb +0 -78
  202. data/spec/unit/memory_leak_spec.rb +0 -38
  203. data/spec/unit/multiple_transitions_that_differ_only_by_guard_spec.rb +0 -14
  204. data/spec/unit/namespaced_multiple_example_spec.rb +0 -75
  205. data/spec/unit/new_dsl_spec.rb +0 -12
  206. data/spec/unit/override_warning_spec.rb +0 -94
  207. data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +0 -618
  208. data/spec/unit/persistence/active_record_persistence_spec.rb +0 -735
  209. data/spec/unit/persistence/dynamoid_persistence_multiple_spec.rb +0 -135
  210. data/spec/unit/persistence/dynamoid_persistence_spec.rb +0 -84
  211. data/spec/unit/persistence/mongoid_persistence_multiple_spec.rb +0 -200
  212. data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -165
  213. data/spec/unit/persistence/no_brainer_persistence_multiple_spec.rb +0 -198
  214. data/spec/unit/persistence/no_brainer_persistence_spec.rb +0 -158
  215. data/spec/unit/persistence/redis_persistence_multiple_spec.rb +0 -88
  216. data/spec/unit/persistence/redis_persistence_spec.rb +0 -53
  217. data/spec/unit/persistence/sequel_persistence_multiple_spec.rb +0 -148
  218. data/spec/unit/persistence/sequel_persistence_spec.rb +0 -368
  219. data/spec/unit/readme_spec.rb +0 -41
  220. data/spec/unit/reloading_spec.rb +0 -15
  221. data/spec/unit/rspec_matcher_spec.rb +0 -85
  222. data/spec/unit/simple_custom_example_spec.rb +0 -39
  223. data/spec/unit/simple_example_spec.rb +0 -42
  224. data/spec/unit/simple_multiple_example_spec.rb +0 -91
  225. data/spec/unit/state_spec.rb +0 -89
  226. data/spec/unit/states_on_one_line_example_spec.rb +0 -16
  227. data/spec/unit/subclassing_multiple_spec.rb +0 -74
  228. data/spec/unit/subclassing_spec.rb +0 -46
  229. data/spec/unit/transition_spec.rb +0 -436
  230. data/test/minitest_helper.rb +0 -57
  231. data/test/unit/minitest_matcher_test.rb +0 -80
@@ -1,66 +0,0 @@
1
- module Callbacks
2
- class GuardWithinBlockMultiple
3
- include AASM
4
-
5
- def initialize(options={})
6
- @fail_event_guard = options[:fail_event_guard]
7
- @fail_transition_guard = options[:fail_transition_guard]
8
- @log = options[:log]
9
- end
10
-
11
- aasm(:left) do
12
- state :open, :initial => true,
13
- :before_enter => :before_enter_open,
14
- :enter => :enter_open,
15
- :after_enter => :after_enter_open,
16
- :before_exit => :before_exit_open,
17
- :exit => :exit_open,
18
- :after_exit => :after_exit_open
19
-
20
- state :closed,
21
- :before_enter => :before_enter_closed,
22
- :enter => :enter_closed,
23
- :after_enter => :after_enter_closed,
24
- :before_exit => :before_exit_closed,
25
- :exit => :exit_closed,
26
- :after_exit => :after_exit_closed
27
-
28
- event :close, :before => :before, :after => :after, :guard => :event_guard do
29
- transitions :to => :closed, :from => [:open], :after => :transitioning do
30
- guard do
31
- transition_guard
32
- end
33
- end
34
- end
35
-
36
- event :open, :before => :before, :after => :after do
37
- transitions :to => :open, :from => :closed
38
- end
39
- end
40
-
41
- def log(text)
42
- puts text if @log
43
- end
44
-
45
- def before_enter_open; log('before_enter_open'); end
46
- def enter_open; log('enter_open'); end
47
- def before_exit_open; log('before_exit_open'); end
48
- def after_enter_open; log('after_enter_open'); end
49
- def exit_open; log('exit_open'); end
50
- def after_exit_open; log('after_exit_open'); end
51
-
52
- def before_enter_closed; log('before_enter_closed'); end
53
- def enter_closed; log('enter_closed'); end
54
- def before_exit_closed; log('before_exit_closed'); end
55
- def exit_closed; log('exit_closed'); end
56
- def after_enter_closed; log('after_enter_closed'); end
57
- def after_exit_closed; log('after_exit_closed'); end
58
-
59
- def event_guard; log('event_guard'); !@fail_event_guard; end
60
- def transition_guard; log('transition_guard'); !@fail_transition_guard; end
61
- def transitioning; log('transitioning'); end
62
-
63
- def before; log('before'); end
64
- def after; log('after'); end
65
- end
66
- end
@@ -1,66 +0,0 @@
1
- module Callbacks
2
- class MultipleTransitionsTransitionGuard
3
- include AASM
4
-
5
- def initialize(options={})
6
- @fail_event_guard = options[:fail_event_guard]
7
- @fail_transition_guard = options[:fail_transition_guard]
8
- @log = options[:log]
9
- end
10
-
11
- aasm do
12
- state :open, :initial => true,
13
- :before_enter => :before_enter_open,
14
- :enter => :enter_open,
15
- :after_enter => :after_enter_open,
16
- :before_exit => :before_exit_open,
17
- :exit => :exit_open,
18
- :after_exit => :after_exit_open
19
-
20
- state :closed,
21
- :before_enter => :before_enter_closed,
22
- :enter => :enter_closed,
23
- :after_enter => :after_enter_closed,
24
- :before_exit => :before_exit_closed,
25
- :exit => :exit_closed,
26
- :after_exit => :after_exit_closed
27
-
28
- state :failed
29
-
30
- event :close, :before => :before, :after => :after, :guard => :event_guard do
31
- transitions :to => :closed, :from => [:open], :guard => :transition_guard, :after => :transitioning, :success => :success_transition
32
- transitions :to => :failed, :from => [:open]
33
- end
34
-
35
- event :open, :before => :before, :after => :after do
36
- transitions :to => :open, :from => :closed
37
- end
38
- end
39
-
40
- def log(text)
41
- puts text if @log
42
- end
43
-
44
- def before_enter_open; log('before_enter_open'); end
45
- def enter_open; log('enter_open'); end
46
- def before_exit_open; log('before_exit_open'); end
47
- def after_enter_open; log('after_enter_open'); end
48
- def exit_open; log('exit_open'); end
49
- def after_exit_open; log('after_exit_open'); end
50
-
51
- def before_enter_closed; log('before_enter_closed'); end
52
- def enter_closed; log('enter_closed'); end
53
- def before_exit_closed; log('before_exit_closed'); end
54
- def exit_closed; log('exit_closed'); end
55
- def after_enter_closed; log('after_enter_closed'); end
56
- def after_exit_closed; log('after_exit_closed'); end
57
-
58
- def event_guard; log('event_guard'); !@fail_event_guard; end
59
- def transition_guard; log('transition_guard'); !@fail_transition_guard; end
60
- def transitioning; log('transitioning'); end
61
- def success_transition; log('transition success'); end
62
-
63
- def before; log('before'); end
64
- def after; log('after'); end
65
- end
66
- end
@@ -1,65 +0,0 @@
1
- module Callbacks
2
- class MultipleTransitionsTransitionGuardMultiple
3
- include AASM
4
-
5
- def initialize(options={})
6
- @fail_event_guard = options[:fail_event_guard]
7
- @fail_transition_guard = options[:fail_transition_guard]
8
- @log = options[:log]
9
- end
10
-
11
- aasm(:left) do
12
- state :open, :initial => true,
13
- :before_enter => :before_enter_open,
14
- :enter => :enter_open,
15
- :after_enter => :after_enter_open,
16
- :before_exit => :before_exit_open,
17
- :exit => :exit_open,
18
- :after_exit => :after_exit_open
19
-
20
- state :closed,
21
- :before_enter => :before_enter_closed,
22
- :enter => :enter_closed,
23
- :after_enter => :after_enter_closed,
24
- :before_exit => :before_exit_closed,
25
- :exit => :exit_closed,
26
- :after_exit => :after_exit_closed
27
-
28
- state :failed
29
-
30
- event :close, :before => :before, :after => :after, :guard => :event_guard do
31
- transitions :to => :closed, :from => [:open], :guard => :transition_guard, :after => :transitioning
32
- transitions :to => :failed, :from => [:open]
33
- end
34
-
35
- event :open, :before => :before, :after => :after do
36
- transitions :to => :open, :from => :closed
37
- end
38
- end
39
-
40
- def log(text)
41
- puts text if @log
42
- end
43
-
44
- def before_enter_open; log('before_enter_open'); end
45
- def enter_open; log('enter_open'); end
46
- def before_exit_open; log('before_exit_open'); end
47
- def after_enter_open; log('after_enter_open'); end
48
- def exit_open; log('exit_open'); end
49
- def after_exit_open; log('after_exit_open'); end
50
-
51
- def before_enter_closed; log('before_enter_closed'); end
52
- def enter_closed; log('enter_closed'); end
53
- def before_exit_closed; log('before_exit_closed'); end
54
- def exit_closed; log('exit_closed'); end
55
- def after_enter_closed; log('after_enter_closed'); end
56
- def after_exit_closed; log('after_exit_closed'); end
57
-
58
- def event_guard; log('event_guard'); !@fail_event_guard; end
59
- def transition_guard; log('transition_guard'); !@fail_transition_guard; end
60
- def transitioning; log('transitioning'); end
61
-
62
- def before; log('before'); end
63
- def after; log('after'); end
64
- end
65
- end
@@ -1,44 +0,0 @@
1
- module Callbacks
2
- class PrivateMethod
3
- include AASM
4
-
5
- def initialize(options={})
6
- @fail_event_guard = options[:fail_event_guard]
7
- @fail_transition_guard = options[:fail_transition_guard]
8
- @log = options[:log]
9
- reset_data
10
- end
11
-
12
- def reset_data
13
- @data = []
14
- end
15
-
16
- def data
17
- @data.join(' ')
18
- end
19
-
20
- aasm do
21
- state :open, :initial => true
22
- state :closed
23
-
24
- event :close, :after => :after_event do
25
- transitions :to => :closed, :from => [:open]
26
- end
27
-
28
- event :open, :after => :after_event do
29
- transitions :to => :open, :from => :closed
30
- end
31
- end
32
-
33
- def log(text)
34
- @data << text
35
- puts text if @log
36
- end
37
-
38
- def aasm_write_state(*args); log('aasm_write_state'); true; end
39
-
40
- private
41
-
42
- def after_event; log('after_event'); end
43
- end
44
- end
@@ -1,44 +0,0 @@
1
- module Callbacks
2
- class PrivateMethodMultiple
3
- include AASM
4
-
5
- def initialize(options={})
6
- @fail_event_guard = options[:fail_event_guard]
7
- @fail_transition_guard = options[:fail_transition_guard]
8
- @log = options[:log]
9
- reset_data
10
- end
11
-
12
- def reset_data
13
- @data = []
14
- end
15
-
16
- def data
17
- @data.join(' ')
18
- end
19
-
20
- aasm(:left) do
21
- state :open, :initial => true
22
- state :closed
23
-
24
- event :close, :after => :after_event do
25
- transitions :to => :closed, :from => [:open]
26
- end
27
-
28
- event :open, :after => :after_event do
29
- transitions :to => :open, :from => :closed
30
- end
31
- end
32
-
33
- def log(text)
34
- @data << text
35
- puts text if @log
36
- end
37
-
38
- def aasm_write_state(*args); log('aasm_write_state'); true; end
39
-
40
- private
41
-
42
- def after_event; log('after_event'); end
43
- end
44
- end
@@ -1,62 +0,0 @@
1
- module Callbacks
2
- class WithArgs
3
- include AASM
4
-
5
- def initialize(options={})
6
- @log = options[:log]
7
- reset_data
8
- end
9
-
10
- def reset_data
11
- @data = []
12
- end
13
-
14
- def data
15
- @data.join(' ')
16
- end
17
-
18
- aasm do
19
- state :open, :initial => true,
20
- :before_enter => :before_enter_open,
21
- :after_enter => :after_enter_open,
22
- :before_exit => :before_exit_open,
23
- :after_exit => :after_exit_open
24
-
25
- state :closed,
26
- :before_enter => :before_enter_closed,
27
- :after_enter => :after_enter_closed,
28
- :before_exit => :before_exit_closed,
29
- :after_exit => :after_exit_closed
30
-
31
- event :close, :before => :before, :after => :after do
32
- transitions :to => :closed, :from => [:open], :after => :transition_proc, :success => :transition_success_proc
33
- end
34
-
35
- event :open, :before => :before, :after => :after do
36
- transitions :to => :open, :from => :closed
37
- end
38
- end
39
-
40
- def log(text)
41
- @data << text
42
- puts text if @log
43
- end
44
-
45
- def aasm_write_state(*args); log('aasm_write_state'); true; end
46
-
47
- def before_enter_open(*args); log("before_enter_open(#{args.map(&:inspect).join(',')})"); end
48
- def before_exit_open(*args); log("before_exit_open(#{args.map(&:inspect).join(',')})"); end
49
- def after_enter_open(*args); log("after_enter_open(#{args.map(&:inspect).join(',')})"); end
50
- def after_exit_open(*args); log("after_exit_open(#{args.map(&:inspect).join(',')})"); end
51
-
52
- def before_enter_closed(*args); log("before_enter_closed(#{args.map(&:inspect).join(',')})"); end
53
- def before_exit_closed(*args); log("before_enter_closed(#{args.map(&:inspect).join(',')})"); end
54
- def after_enter_closed(*args); log("after_enter_closed(#{args.map(&:inspect).join(',')})"); end
55
- def after_exit_closed(*args); log("after_exit_closed(#{args.map(&:inspect).join(',')})"); end
56
-
57
- def before(arg1, *args); log("before(#{arg1.inspect},#{args.map(&:inspect).join(',')})"); end
58
- def transition_proc(arg1, arg2); log("transition_proc(#{arg1.inspect},#{arg2.inspect})"); end
59
- def after(*args); log("after(#{args.map(&:inspect).join(',')})"); end
60
- def transition_success_proc(*args); log("transition_success(#{args.map(&:inspect).join(',')})"); end
61
- end
62
- end
@@ -1,61 +0,0 @@
1
- module Callbacks
2
- class WithArgsMultiple
3
- include AASM
4
-
5
- def initialize(options={})
6
- @log = options[:log]
7
- reset_data
8
- end
9
-
10
- def reset_data
11
- @data = []
12
- end
13
-
14
- def data
15
- @data.join(' ')
16
- end
17
-
18
- aasm(:left) do
19
- state :open, :initial => true,
20
- :before_enter => :before_enter_open,
21
- :after_enter => :after_enter_open,
22
- :before_exit => :before_exit_open,
23
- :after_exit => :after_exit_open
24
-
25
- state :closed,
26
- :before_enter => :before_enter_closed,
27
- :after_enter => :after_enter_closed,
28
- :before_exit => :before_exit_closed,
29
- :after_exit => :after_exit_closed
30
-
31
- event :close, :before => :before, :after => :after do
32
- transitions :to => :closed, :from => [:open], :after => :transition_proc
33
- end
34
-
35
- event :open, :before => :before, :after => :after do
36
- transitions :to => :open, :from => :closed
37
- end
38
- end
39
-
40
- def log(text)
41
- @data << text
42
- puts text if @log
43
- end
44
-
45
- def aasm_write_state(*args); log('aasm_write_state'); true; end
46
-
47
- def before_enter_open(*args); log("before_enter_open(#{args.map(&:inspect).join(',')})"); end
48
- def before_exit_open(*args); log("before_exit_open(#{args.map(&:inspect).join(',')})"); end
49
- def after_enter_open(*args); log("after_enter_open(#{args.map(&:inspect).join(',')})"); end
50
- def after_exit_open(*args); log("after_exit_open(#{args.map(&:inspect).join(',')})"); end
51
-
52
- def before_enter_closed(*args); log("before_enter_closed(#{args.map(&:inspect).join(',')})"); end
53
- def before_exit_closed(*args); log("before_enter_closed(#{args.map(&:inspect).join(',')})"); end
54
- def after_enter_closed(*args); log("after_enter_closed(#{args.map(&:inspect).join(',')})"); end
55
- def after_exit_closed(*args); log("after_exit_closed(#{args.map(&:inspect).join(',')})"); end
56
-
57
- def before(arg1, *args); log("before(#{arg1.inspect},#{args.map(&:inspect).join(',')})"); end
58
- def transition_proc(arg1, arg2); log("transition_proc(#{arg1.inspect},#{arg2.inspect})"); end
59
- def after(*args); log("after(#{args.map(&:inspect).join(',')})"); end
60
- end
61
- end
@@ -1,30 +0,0 @@
1
- module Callbacks
2
- class WithStateArg
3
-
4
- include AASM
5
-
6
- aasm do
7
- state :open, :initial => true
8
- state :closed
9
- state :out_to_lunch
10
-
11
- event :close, :before => :before_method, :after => :after_method do
12
- transitions :to => :closed, :from => [:open], :after => :transition_method, :success => :success_method
13
- transitions :to => :out_to_lunch, :from => [:open], :after => :transition_method2, :success => :success_method2
14
- end
15
- end
16
-
17
- def before_method(arg); end
18
-
19
- def after_method(arg); end
20
-
21
- def transition_method(arg); end
22
-
23
- def transition_method2(arg); end
24
-
25
- def success_method(arg); end
26
-
27
- def success_method2(arg); end
28
-
29
- end
30
- end
@@ -1,26 +0,0 @@
1
- module Callbacks
2
- class WithStateArgMultiple
3
-
4
- include AASM
5
-
6
- aasm(:left) do
7
- state :open, :initial => true
8
- state :closed
9
- state :out_to_lunch
10
-
11
- event :close, :before => :before_method, :after => :after_method do
12
- transitions :to => :closed, :from => [:open], :after => :transition_method
13
- transitions :to => :out_to_lunch, :from => [:open], :after => :transition_method2
14
- end
15
- end
16
-
17
- def before_method(arg); end
18
-
19
- def after_method(arg); end
20
-
21
- def transition_method(arg); end
22
-
23
- def transition_method2(arg); end
24
-
25
- end
26
- end
@@ -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