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,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
@@ -1,100 +0,0 @@
1
- class ValidatorMongoid
2
- include Mongoid::Document
3
- include AASM
4
-
5
- field :name
6
- field :status
7
-
8
- attr_accessor :invalid
9
-
10
- validate do |model|
11
- errors.add(:validator, "invalid") if invalid
12
- end
13
-
14
- include AASM
15
-
16
- aasm :column => :status, :whiny_persistence => true do
17
- before_all_transactions :before_all_transactions
18
- after_all_transactions :after_all_transactions
19
-
20
- state :sleeping, :initial => true
21
- state :running
22
- state :failed, :after_enter => :fail
23
-
24
- event :run, :after_commit => :change_name! do
25
- transitions :to => :running, :from => :sleeping
26
- end
27
-
28
- event :sleep do
29
- after_commit do |name|
30
- change_name_on_sleep name
31
- end
32
- transitions :to => :sleeping, :from => :running
33
- end
34
-
35
- event :fail do
36
- transitions :to => :failed, :from => [:sleeping, :running]
37
- end
38
- end
39
-
40
- validates_presence_of :name
41
-
42
- def change_name!
43
- self.name = "name changed"
44
- save!
45
- end
46
-
47
- def change_name_on_sleep name
48
- self.name = name
49
- save!
50
- end
51
-
52
- def fail
53
- raise StandardError.new('failed on purpose')
54
- end
55
- end
56
-
57
- class MultipleValidatorMongoid
58
- include Mongoid::Document
59
- include AASM
60
-
61
- field :name
62
- field :status
63
-
64
- attr_accessor :invalid
65
-
66
- aasm :left, :column => :status, :whiny_persistence => true do
67
- state :sleeping, :initial => true
68
- state :running
69
- state :failed, :after_enter => :fail
70
-
71
- event :run, :after_commit => :change_name! do
72
- transitions :to => :running, :from => :sleeping
73
- end
74
- event :sleep do
75
- after_commit do |name|
76
- change_name_on_sleep name
77
- end
78
- transitions :to => :sleeping, :from => :running
79
- end
80
- event :fail do
81
- transitions :to => :failed, :from => [:sleeping, :running]
82
- end
83
- end
84
-
85
- validates_presence_of :name
86
-
87
- def change_name!
88
- self.name = "name changed"
89
- save!
90
- end
91
-
92
- def change_name_on_sleep name
93
- self.name = name
94
- save!
95
- end
96
-
97
- def fail
98
- raise StandardError.new('failed on purpose')
99
- end
100
- end
@@ -1,34 +0,0 @@
1
- class MultiTransitioner
2
- include AASM
3
-
4
- attr_accessor :can_run
5
-
6
- def initialize
7
- @can_run = false
8
- end
9
-
10
- aasm do
11
- state :sleeping, :initial => true
12
- state :running
13
- state :dancing
14
- state :dead
15
-
16
- event :start do
17
- transitions :from => :sleeping, :to => :running, guard: :runnable?
18
- transitions :from => :sleeping, :to => :dancing
19
- end
20
-
21
- event :sleep do
22
- transitions to: :sleeping, if: :alive?
23
- transitions to: :dead, from: [:running, :dancing]
24
- end
25
- end
26
-
27
- def runnable?
28
- @can_run
29
- end
30
-
31
- def alive?
32
- true
33
- end
34
- end
@@ -1,31 +0,0 @@
1
- class MultipleTransitionsThatDifferOnlyByGuard
2
- include AASM
3
-
4
- attr_accessor :executed_second
5
-
6
- aasm do
7
- state :start, :initial => true
8
- state :gone
9
-
10
- event :go do
11
- transitions :from => :start, :to => :gone, :guard => :returns_false, :after => :this_should_not_execute
12
- transitions :from => :start, :to => :gone, :guard => :returns_true, :after => :this_should_execute
13
- end
14
- end
15
-
16
- def returns_false
17
- false
18
- end
19
-
20
- def returns_true
21
- true
22
- end
23
-
24
- def this_should_not_execute
25
- raise RuntimeError, "This should not execute"
26
- end
27
-
28
- def this_should_execute
29
- self.executed_second = true
30
- end
31
- end
@@ -1,42 +0,0 @@
1
- class NamespacedMultipleExample
2
- include AASM
3
- aasm(:status) do
4
- state :unapproved, :initial => true
5
- state :approved
6
-
7
- event :approve do
8
- transitions :from => :unapproved, :to => :approved
9
- end
10
-
11
- event :unapprove do
12
- transitions :from => :approved, :to => :unapproved
13
- end
14
- end
15
-
16
- aasm(:review_status, namespace: :review) do
17
- state :unapproved, :initial => true
18
- state :approved
19
-
20
- event :approve_review do
21
- transitions :from => :unapproved, :to => :approved
22
- end
23
-
24
- event :unapprove_review do
25
- transitions :from => :approved, :to => :unapproved
26
- end
27
- end
28
-
29
- # Test namespace event methods with suffix (ie may_sell_car?, sell_car!)
30
- aasm(:car, namespace: :car) do
31
- state :unsold, :initial => true
32
- state :sold
33
-
34
- event :sell do
35
- transitions :from => :unsold, :to => :sold
36
- end
37
-
38
- event :return do
39
- transitions :from => :sold, :to => :unsold
40
- end
41
- end
42
- end
@@ -1,25 +0,0 @@
1
- class NoInitialState
2
- include AASM
3
-
4
- aasm do
5
- state :read
6
- state :ended
7
-
8
- event :foo do
9
- transitions :to => :ended, :from => [:read]
10
- end
11
- end
12
- end
13
-
14
- class NoInitialStateMultiple
15
- include AASM
16
-
17
- aasm(:left) do
18
- state :read
19
- state :ended
20
-
21
- event :foo do
22
- transitions :to => :ended, :from => [:read]
23
- end
24
- end
25
- end
@@ -1,36 +0,0 @@
1
- class ComplexNoBrainerExample
2
- include NoBrainer::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
- end
@@ -1,39 +0,0 @@
1
- class InvalidPersistorNoBrainer
2
- include NoBrainer::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 MultipleInvalidPersistorNoBrainer
22
- include NoBrainer::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,21 +0,0 @@
1
- class NoScopeNoBrainer
2
- include NoBrainer::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 NoScopeNoBrainerMultiple
13
- include NoBrainer::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,25 +0,0 @@
1
- class Parent
2
- include NoBrainer::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 NoBrainer::Document
16
- include AASM
17
-
18
- field :status, type: String
19
- belongs_to :parent
20
-
21
- aasm column: :status do
22
- state :unknown_scope
23
- state :new
24
- end
25
- end