aasm 4.12.3 → 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 (218) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +284 -119
  3. data/lib/aasm/aasm.rb +30 -27
  4. data/lib/aasm/base.rb +61 -11
  5. data/lib/aasm/configuration.rb +3 -0
  6. data/lib/aasm/core/event.rb +26 -30
  7. data/lib/aasm/core/invoker.rb +129 -0
  8. data/lib/aasm/core/invokers/base_invoker.rb +75 -0
  9. data/lib/aasm/core/invokers/class_invoker.rb +52 -0
  10. data/lib/aasm/core/invokers/literal_invoker.rb +49 -0
  11. data/lib/aasm/core/invokers/proc_invoker.rb +59 -0
  12. data/lib/aasm/core/state.rb +16 -14
  13. data/lib/aasm/core/transition.rb +8 -69
  14. data/lib/aasm/dsl_helper.rb +24 -22
  15. data/lib/aasm/errors.rb +5 -3
  16. data/lib/aasm/instance_base.rb +28 -5
  17. data/lib/aasm/localizer.rb +13 -3
  18. data/lib/aasm/persistence/active_record_persistence.rb +25 -5
  19. data/lib/aasm/persistence/base.rb +14 -3
  20. data/lib/aasm/persistence/core_data_query_persistence.rb +2 -1
  21. data/lib/aasm/persistence/dynamoid_persistence.rb +1 -1
  22. data/lib/aasm/persistence/mongoid_persistence.rb +1 -1
  23. data/lib/aasm/persistence/no_brainer_persistence.rb +105 -0
  24. data/lib/aasm/persistence/orm.rb +23 -19
  25. data/lib/aasm/persistence/plain_persistence.rb +2 -1
  26. data/lib/aasm/persistence/redis_persistence.rb +1 -1
  27. data/lib/aasm/persistence/sequel_persistence.rb +0 -1
  28. data/lib/aasm/persistence.rb +3 -0
  29. data/lib/aasm/rspec/allow_event.rb +5 -1
  30. data/lib/aasm/rspec/allow_transition_to.rb +5 -1
  31. data/lib/aasm/rspec/transition_from.rb +5 -1
  32. data/lib/aasm/version.rb +1 -1
  33. data/lib/aasm.rb +5 -2
  34. data/lib/generators/aasm/orm_helpers.rb +7 -1
  35. data/lib/generators/active_record/aasm_generator.rb +3 -1
  36. data/lib/generators/active_record/templates/migration.rb +1 -1
  37. data/lib/generators/nobrainer/aasm_generator.rb +28 -0
  38. data/lib/motion-aasm.rb +1 -0
  39. metadata +42 -344
  40. data/.document +0 -6
  41. data/.gitignore +0 -20
  42. data/.travis.yml +0 -52
  43. data/API +0 -34
  44. data/Appraisals +0 -43
  45. data/CHANGELOG.md +0 -370
  46. data/CODE_OF_CONDUCT.md +0 -13
  47. data/CONTRIBUTING.md +0 -24
  48. data/Gemfile +0 -7
  49. data/Gemfile.lock_old +0 -151
  50. data/HOWTO +0 -12
  51. data/PLANNED_CHANGES.md +0 -11
  52. data/README_FROM_VERSION_3_TO_4.md +0 -240
  53. data/Rakefile +0 -31
  54. data/TESTING.md +0 -25
  55. data/aasm.gemspec +0 -35
  56. data/callbacks.txt +0 -51
  57. data/gemfiles/rails_3.2.gemfile +0 -13
  58. data/gemfiles/rails_4.0.gemfile +0 -15
  59. data/gemfiles/rails_4.2.gemfile +0 -16
  60. data/gemfiles/rails_4.2_mongoid_5.gemfile +0 -11
  61. data/gemfiles/rails_5.0.gemfile +0 -14
  62. data/spec/database.rb +0 -44
  63. data/spec/database.yml +0 -3
  64. data/spec/en.yml +0 -12
  65. data/spec/en_deprecated_style.yml +0 -10
  66. data/spec/generators/active_record_generator_spec.rb +0 -47
  67. data/spec/generators/mongoid_generator_spec.rb +0 -31
  68. data/spec/models/active_record/basic_active_record_two_state_machines_example.rb +0 -25
  69. data/spec/models/active_record/complex_active_record_example.rb +0 -37
  70. data/spec/models/active_record/derivate_new_dsl.rb +0 -7
  71. data/spec/models/active_record/false_state.rb +0 -35
  72. data/spec/models/active_record/gate.rb +0 -39
  73. data/spec/models/active_record/invalid_persistor.rb +0 -29
  74. data/spec/models/active_record/localizer_test_model.rb +0 -34
  75. data/spec/models/active_record/no_direct_assignment.rb +0 -21
  76. data/spec/models/active_record/no_scope.rb +0 -21
  77. data/spec/models/active_record/persisted_state.rb +0 -12
  78. data/spec/models/active_record/provided_and_persisted_state.rb +0 -24
  79. data/spec/models/active_record/reader.rb +0 -7
  80. data/spec/models/active_record/readme_job.rb +0 -21
  81. data/spec/models/active_record/silent_persistor.rb +0 -29
  82. data/spec/models/active_record/simple_new_dsl.rb +0 -17
  83. data/spec/models/active_record/thief.rb +0 -29
  84. data/spec/models/active_record/transactor.rb +0 -124
  85. data/spec/models/active_record/transient.rb +0 -6
  86. data/spec/models/active_record/validator.rb +0 -118
  87. data/spec/models/active_record/with_enum.rb +0 -39
  88. data/spec/models/active_record/with_enum_without_column.rb +0 -38
  89. data/spec/models/active_record/with_false_enum.rb +0 -31
  90. data/spec/models/active_record/with_true_enum.rb +0 -39
  91. data/spec/models/active_record/worker.rb +0 -2
  92. data/spec/models/active_record/writer.rb +0 -6
  93. data/spec/models/basic_two_state_machines_example.rb +0 -25
  94. data/spec/models/callbacks/basic.rb +0 -98
  95. data/spec/models/callbacks/basic_multiple.rb +0 -75
  96. data/spec/models/callbacks/guard_within_block.rb +0 -67
  97. data/spec/models/callbacks/guard_within_block_multiple.rb +0 -66
  98. data/spec/models/callbacks/multiple_transitions_transition_guard.rb +0 -66
  99. data/spec/models/callbacks/multiple_transitions_transition_guard_multiple.rb +0 -65
  100. data/spec/models/callbacks/private_method.rb +0 -44
  101. data/spec/models/callbacks/private_method_multiple.rb +0 -44
  102. data/spec/models/callbacks/with_args.rb +0 -62
  103. data/spec/models/callbacks/with_args_multiple.rb +0 -61
  104. data/spec/models/callbacks/with_state_arg.rb +0 -30
  105. data/spec/models/callbacks/with_state_arg_multiple.rb +0 -26
  106. data/spec/models/complex_example.rb +0 -222
  107. data/spec/models/conversation.rb +0 -93
  108. data/spec/models/default_state.rb +0 -12
  109. data/spec/models/double_definer.rb +0 -21
  110. data/spec/models/dynamoid/complex_dynamoid_example.rb +0 -37
  111. data/spec/models/dynamoid/dynamoid_multiple.rb +0 -18
  112. data/spec/models/dynamoid/dynamoid_simple.rb +0 -18
  113. data/spec/models/foo.rb +0 -106
  114. data/spec/models/foo_callback_multiple.rb +0 -45
  115. data/spec/models/guard_arguments_check.rb +0 -17
  116. data/spec/models/guard_with_params.rb +0 -24
  117. data/spec/models/guard_with_params_multiple.rb +0 -18
  118. data/spec/models/guardian.rb +0 -58
  119. data/spec/models/guardian_multiple.rb +0 -48
  120. data/spec/models/guardian_without_from_specified.rb +0 -18
  121. data/spec/models/initial_state_proc.rb +0 -31
  122. data/spec/models/mongoid/complex_mongoid_example.rb +0 -37
  123. data/spec/models/mongoid/invalid_persistor_mongoid.rb +0 -39
  124. data/spec/models/mongoid/mongoid_relationships.rb +0 -26
  125. data/spec/models/mongoid/no_scope_mongoid.rb +0 -21
  126. data/spec/models/mongoid/silent_persistor_mongoid.rb +0 -39
  127. data/spec/models/mongoid/simple_mongoid.rb +0 -23
  128. data/spec/models/mongoid/simple_new_dsl_mongoid.rb +0 -25
  129. data/spec/models/mongoid/validator_mongoid.rb +0 -100
  130. data/spec/models/multi_transitioner.rb +0 -34
  131. data/spec/models/multiple_transitions_that_differ_only_by_guard.rb +0 -31
  132. data/spec/models/namespaced_multiple_example.rb +0 -42
  133. data/spec/models/no_initial_state.rb +0 -25
  134. data/spec/models/not_auto_loaded/process.rb +0 -21
  135. data/spec/models/parametrised_event.rb +0 -42
  136. data/spec/models/parametrised_event_multiple.rb +0 -29
  137. data/spec/models/process_with_new_dsl.rb +0 -31
  138. data/spec/models/provided_state.rb +0 -24
  139. data/spec/models/redis/complex_redis_example.rb +0 -40
  140. data/spec/models/redis/redis_multiple.rb +0 -20
  141. data/spec/models/redis/redis_simple.rb +0 -20
  142. data/spec/models/sequel/complex_sequel_example.rb +0 -46
  143. data/spec/models/sequel/invalid_persistor.rb +0 -52
  144. data/spec/models/sequel/sequel_multiple.rb +0 -25
  145. data/spec/models/sequel/sequel_simple.rb +0 -26
  146. data/spec/models/sequel/silent_persistor.rb +0 -50
  147. data/spec/models/sequel/transactor.rb +0 -112
  148. data/spec/models/sequel/validator.rb +0 -93
  149. data/spec/models/sequel/worker.rb +0 -12
  150. data/spec/models/silencer.rb +0 -27
  151. data/spec/models/simple_custom_example.rb +0 -53
  152. data/spec/models/simple_example.rb +0 -15
  153. data/spec/models/simple_multiple_example.rb +0 -42
  154. data/spec/models/state_machine_with_failed_event.rb +0 -20
  155. data/spec/models/states_on_one_line_example.rb +0 -8
  156. data/spec/models/sub_class.rb +0 -41
  157. data/spec/models/sub_class_with_more_states.rb +0 -18
  158. data/spec/models/sub_classing.rb +0 -3
  159. data/spec/models/super_class.rb +0 -46
  160. data/spec/models/this_name_better_not_be_in_use.rb +0 -11
  161. data/spec/models/valid_state_name.rb +0 -23
  162. data/spec/spec_helper.rb +0 -26
  163. data/spec/spec_helpers/active_record.rb +0 -7
  164. data/spec/spec_helpers/dynamoid.rb +0 -33
  165. data/spec/spec_helpers/mongoid.rb +0 -7
  166. data/spec/spec_helpers/redis.rb +0 -15
  167. data/spec/spec_helpers/remove_warnings.rb +0 -1
  168. data/spec/spec_helpers/sequel.rb +0 -7
  169. data/spec/unit/api_spec.rb +0 -100
  170. data/spec/unit/basic_two_state_machines_example_spec.rb +0 -10
  171. data/spec/unit/callback_multiple_spec.rb +0 -300
  172. data/spec/unit/callbacks_spec.rb +0 -491
  173. data/spec/unit/complex_example_spec.rb +0 -94
  174. data/spec/unit/complex_multiple_example_spec.rb +0 -115
  175. data/spec/unit/edge_cases_spec.rb +0 -16
  176. data/spec/unit/event_multiple_spec.rb +0 -73
  177. data/spec/unit/event_naming_spec.rb +0 -16
  178. data/spec/unit/event_spec.rb +0 -381
  179. data/spec/unit/exception_spec.rb +0 -11
  180. data/spec/unit/guard_arguments_check_spec.rb +0 -9
  181. data/spec/unit/guard_multiple_spec.rb +0 -60
  182. data/spec/unit/guard_spec.rb +0 -89
  183. data/spec/unit/guard_with_params_multiple_spec.rb +0 -10
  184. data/spec/unit/guard_with_params_spec.rb +0 -14
  185. data/spec/unit/guard_without_from_specified_spec.rb +0 -10
  186. data/spec/unit/initial_state_multiple_spec.rb +0 -15
  187. data/spec/unit/initial_state_spec.rb +0 -12
  188. data/spec/unit/inspection_multiple_spec.rb +0 -201
  189. data/spec/unit/inspection_spec.rb +0 -149
  190. data/spec/unit/localizer_spec.rb +0 -78
  191. data/spec/unit/memory_leak_spec.rb +0 -38
  192. data/spec/unit/multiple_transitions_that_differ_only_by_guard_spec.rb +0 -14
  193. data/spec/unit/namespaced_multiple_example_spec.rb +0 -75
  194. data/spec/unit/new_dsl_spec.rb +0 -12
  195. data/spec/unit/override_warning_spec.rb +0 -94
  196. data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +0 -618
  197. data/spec/unit/persistence/active_record_persistence_spec.rb +0 -735
  198. data/spec/unit/persistence/dynamoid_persistence_multiple_spec.rb +0 -135
  199. data/spec/unit/persistence/dynamoid_persistence_spec.rb +0 -84
  200. data/spec/unit/persistence/mongoid_persistence_multiple_spec.rb +0 -204
  201. data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -169
  202. data/spec/unit/persistence/redis_persistence_multiple_spec.rb +0 -88
  203. data/spec/unit/persistence/redis_persistence_spec.rb +0 -53
  204. data/spec/unit/persistence/sequel_persistence_multiple_spec.rb +0 -148
  205. data/spec/unit/persistence/sequel_persistence_spec.rb +0 -368
  206. data/spec/unit/readme_spec.rb +0 -41
  207. data/spec/unit/reloading_spec.rb +0 -15
  208. data/spec/unit/rspec_matcher_spec.rb +0 -79
  209. data/spec/unit/simple_custom_example_spec.rb +0 -39
  210. data/spec/unit/simple_example_spec.rb +0 -42
  211. data/spec/unit/simple_multiple_example_spec.rb +0 -91
  212. data/spec/unit/state_spec.rb +0 -89
  213. data/spec/unit/states_on_one_line_example_spec.rb +0 -16
  214. data/spec/unit/subclassing_multiple_spec.rb +0 -74
  215. data/spec/unit/subclassing_spec.rb +0 -46
  216. data/spec/unit/transition_spec.rb +0 -436
  217. data/test/minitest_helper.rb +0 -57
  218. data/test/unit/minitest_matcher_test.rb +0 -80
@@ -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
@@ -1,48 +0,0 @@
1
- class GuardianMultiple
2
- include AASM
3
-
4
- aasm(:left) do
5
- state :alpha, :initial => true
6
- state :beta
7
-
8
- event :use_one_guard_that_succeeds do
9
- transitions :from => :alpha, :to => :beta, :guard => :succeed
10
- end
11
- event :use_one_guard_that_fails do
12
- transitions :from => :alpha, :to => :beta, :guard => :fail
13
- end
14
-
15
- event :use_guards_that_succeed do
16
- transitions :from => :alpha, :to => :beta, :guards => [:succeed, :another_succeed]
17
- end
18
- event :use_guards_where_the_first_fails do
19
- transitions :from => :alpha, :to => :beta, :guards => [:succeed, :fail]
20
- end
21
- event :use_guards_where_the_second_fails do
22
- transitions :from => :alpha, :to => :beta, :guards => [:fail, :succeed]
23
- end
24
-
25
- event :use_event_guards_that_succeed, :guards => [:succeed, :another_succeed] do
26
- transitions :from => :alpha, :to => :beta
27
- end
28
- event :use_event_and_transition_guards_that_succeed, :guards => [:succeed, :another_succeed] do
29
- transitions :from => :alpha, :to => :beta, :guards => [:more_succeed]
30
- end
31
- event :use_event_guards_where_the_first_fails, :guards => [:succeed, :fail] do
32
- transitions :from => :alpha, :to => :beta
33
- end
34
- event :use_event_guards_where_the_second_fails, :guards => [:fail, :succeed] do
35
- transitions :from => :alpha, :to => :beta, :guard => :another_succeed
36
- end
37
- event :use_event_and_transition_guards_where_third_fails, :guards => [:succeed, :another_succeed] do
38
- transitions :from => :alpha, :to => :beta, :guards => [:fail]
39
- end
40
- end
41
-
42
- def fail; false; end
43
-
44
- def succeed; true; end
45
- def another_succeed; true; end
46
- def more_succeed; true; end
47
-
48
- end
@@ -1,18 +0,0 @@
1
- class GuardianWithoutFromSpecified
2
- include AASM
3
-
4
- aasm do
5
- state :alpha, :initial => true
6
- state :beta
7
- state :gamma
8
-
9
- event :use_guards_where_the_first_fails do
10
- transitions :to => :beta, :guard => :fail
11
- transitions :to => :gamma, :guard => :succeed
12
- end
13
- end
14
-
15
-
16
- def fail; false; end
17
- def succeed; true; end
18
- end
@@ -1,31 +0,0 @@
1
- class InitialStateProc
2
- RICH = 1_000_000
3
-
4
- attr_accessor :balance
5
-
6
- include AASM
7
- aasm do
8
- state :retired
9
- state :selling_bad_mortgages
10
- initial_state Proc.new { |banker| banker.rich? ? :retired : :selling_bad_mortgages }
11
- end
12
-
13
- def initialize(balance = 0); self.balance = balance; end
14
- def rich?; self.balance >= RICH; end
15
- end
16
-
17
- class InitialStateProcMultiple
18
- RICH = 1_000_000
19
-
20
- attr_accessor :balance
21
-
22
- include AASM
23
- aasm(:left) do
24
- state :retired
25
- state :selling_bad_mortgages
26
- initial_state Proc.new { |banker| banker.rich? ? :retired : :selling_bad_mortgages }
27
- end
28
-
29
- def initialize(balance = 0); self.balance = balance; end
30
- def rich?; self.balance >= RICH; end
31
- end
@@ -1,37 +0,0 @@
1
- class ComplexMongoidExample
2
- include Mongoid::Document
3
- include AASM
4
-
5
- field :left, :type => String
6
- field :right, :type => String
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,39 +0,0 @@
1
- class InvalidPersistorMongoid
2
- include Mongoid::Document
3
- include AASM
4
-
5
- field :name
6
- field :status
7
-
8
- aasm :left, column: :status, skip_validation_on_save: true do
9
- state :sleeping, :initial => true
10
- state :running
11
- event :run do
12
- transitions :to => :running, :from => :sleeping
13
- end
14
- event :sleep do
15
- transitions :to => :sleeping, :from => :running
16
- end
17
- end
18
- validates_presence_of :name
19
- end
20
-
21
- class MultipleInvalidPersistorMongoid
22
- include Mongoid::Document
23
- include AASM
24
-
25
- field :name
26
- field :status
27
-
28
- aasm :left, column: :status, skip_validation_on_save: true do
29
- state :sleeping, :initial => true
30
- state :running
31
- event :run do
32
- transitions :to => :running, :from => :sleeping
33
- end
34
- event :sleep do
35
- transitions :to => :sleeping, :from => :running
36
- end
37
- end
38
- validates_presence_of :name
39
- end
@@ -1,26 +0,0 @@
1
- class Parent
2
- include Mongoid::Document
3
- include AASM
4
-
5
- field :status, :type => String
6
- has_many :childs
7
-
8
- aasm column: :status do
9
- state :unknown_scope
10
- state :new
11
- end
12
- end
13
-
14
- class Child
15
- include Mongoid::Document
16
- include AASM
17
- field :parent_id
18
-
19
- field :status, :type => String
20
- belongs_to :parent
21
-
22
- aasm column: :status do
23
- state :unknown_scope
24
- state :new
25
- end
26
- end
@@ -1,21 +0,0 @@
1
- class NoScopeMongoid
2
- include Mongoid::Document
3
- include AASM
4
-
5
- field :status, :type => String
6
-
7
- aasm :create_scopes => false, :column => :status do
8
- state :ignored_scope
9
- end
10
- end
11
-
12
- class NoScopeMongoidMultiple
13
- include Mongoid::Document
14
- include AASM
15
-
16
- field :status, :type => String
17
-
18
- aasm :left, :create_scopes => false, :column => :status do
19
- state :ignored_scope
20
- end
21
- end
@@ -1,39 +0,0 @@
1
- class SilentPersistorMongoid
2
- include Mongoid::Document
3
- include AASM
4
-
5
- field :name
6
- field :status
7
-
8
- aasm :left, column: :status, whiny_persistence: false do
9
- state :sleeping, :initial => true
10
- state :running
11
- event :run do
12
- transitions :to => :running, :from => :sleeping
13
- end
14
- event :sleep do
15
- transitions :to => :sleeping, :from => :running
16
- end
17
- end
18
- validates_presence_of :name
19
- end
20
-
21
- class MultipleSilentPersistorMongoid
22
- include Mongoid::Document
23
- include AASM
24
-
25
- field :name
26
- field :status
27
-
28
- aasm :left, column: :status, whiny_persistence: false do
29
- state :sleeping, :initial => true
30
- state :running
31
- event :run do
32
- transitions :to => :running, :from => :sleeping
33
- end
34
- event :sleep do
35
- transitions :to => :sleeping, :from => :running
36
- end
37
- end
38
- validates_presence_of :name
39
- end
@@ -1,23 +0,0 @@
1
- class SimpleMongoid
2
- include Mongoid::Document
3
- include AASM
4
-
5
- field :status, :type => String
6
-
7
- aasm column: :status do
8
- state :unknown_scope, :another_unknown_scope
9
- state :new
10
- end
11
- end
12
-
13
- class SimpleMongoidMultiple
14
- include Mongoid::Document
15
- include AASM
16
-
17
- field :status, :type => String
18
-
19
- aasm :left, column: :status do
20
- state :unknown_scope, :another_unknown_scope
21
- state :new
22
- end
23
- end
@@ -1,25 +0,0 @@
1
- class SimpleNewDslMongoid
2
- include Mongoid::Document
3
- include AASM
4
-
5
- field :status, :type => String
6
-
7
- aasm :column => :status
8
- aasm do
9
- state :unknown_scope, :initial => true
10
- state :new
11
- end
12
- end
13
-
14
- class SimpleNewDslMongoidMultiple
15
- include Mongoid::Document
16
- include AASM
17
-
18
- field :status, :type => String
19
-
20
- aasm :left, :column => :status
21
- aasm :left do
22
- state :unknown_scope, :initial => true
23
- state :new
24
- end
25
- end