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,112 +0,0 @@
1
- db = Sequel::DATABASES.first || Sequel.connect(SEQUEL_DB)
2
-
3
- [:transactors, :no_lock_transactors, :lock_transactors, :lock_no_wait_transactors, :multiple_transactors].each do |table_name|
4
- db.create_table(table_name) do
5
- primary_key :id
6
- String "name"
7
- String "status"
8
- Fixnum "worker_id"
9
- end
10
- end
11
-
12
- module Sequel
13
- class Transactor < Sequel::Model(:transactors)
14
-
15
- many_to_one :worker, class: 'Sequel::Worker'
16
-
17
- include AASM
18
- aasm :column => :status do
19
- state :sleeping, :initial => true
20
- state :running, :before_enter => :start_worker, :after_enter => :fail
21
-
22
- event :run do
23
- transitions :to => :running, :from => :sleeping
24
- end
25
- end
26
-
27
- private
28
-
29
- def start_worker
30
- worker.update(status: 'running')
31
- end
32
-
33
- def fail
34
- raise StandardError.new('failed on purpose')
35
- end
36
-
37
- end
38
-
39
- class NoLockTransactor < Sequel::Model(:no_lock_transactors)
40
-
41
- many_to_one :worker, class: 'Sequel::Worker'
42
-
43
- include AASM
44
-
45
- aasm :column => :status do
46
- state :sleeping, :initial => true
47
- state :running
48
-
49
- event :run do
50
- transitions :to => :running, :from => :sleeping
51
- end
52
- end
53
- end
54
-
55
- class LockTransactor < Sequel::Model(:lock_transactors)
56
-
57
- many_to_one :worker, class: 'Sequel::Worker'
58
-
59
- include AASM
60
-
61
- aasm :column => :status, requires_lock: true do
62
- state :sleeping, :initial => true
63
- state :running
64
-
65
- event :run do
66
- transitions :to => :running, :from => :sleeping
67
- end
68
- end
69
- end
70
-
71
- class LockNoWaitTransactor < Sequel::Model(:lock_no_wait_transactors)
72
-
73
- many_to_one :worker, class: 'Sequel::Worker'
74
-
75
- include AASM
76
-
77
- aasm :column => :status, requires_lock: 'FOR UPDATE NOWAIT' do
78
- state :sleeping, :initial => true
79
- state :running
80
-
81
- event :run do
82
- transitions :to => :running, :from => :sleeping
83
- end
84
- end
85
- end
86
-
87
- class MultipleTransactor < Sequel::Model(:multiple_transactors)
88
-
89
- many_to_one :worker, class: 'Sequel::Worker'
90
-
91
- include AASM
92
- aasm :left, :column => :status do
93
- state :sleeping, :initial => true
94
- state :running, :before_enter => :start_worker, :after_enter => :fail
95
-
96
- event :run do
97
- transitions :to => :running, :from => :sleeping
98
- end
99
- end
100
-
101
- private
102
-
103
- def start_worker
104
- worker.update(:status, 'running')
105
- end
106
-
107
- def fail
108
- raise StandardError.new('failed on purpose')
109
- end
110
-
111
- end
112
- end
@@ -1,93 +0,0 @@
1
- db = Sequel::DATABASES.first || Sequel.connect(SEQUEL_DB)
2
-
3
- db.create_table(:validators) do
4
- primary_key :id
5
- String "name"
6
- String "status"
7
- Fixnum "worker_id"
8
- end
9
-
10
- module Sequel
11
- class Validator < Sequel::Model(:validators)
12
- plugin :validation_helpers
13
-
14
- attr_accessor :after_all_transactions_performed,
15
- :after_transaction_performed_on_fail,
16
- :after_transaction_performed_on_run,
17
- :before_all_transactions_performed,
18
- :before_transaction_performed_on_fail,
19
- :before_transaction_performed_on_run,
20
- :invalid
21
-
22
- def validate
23
- super
24
- errors.add(:validator, "invalid") if invalid
25
- validates_presence :name
26
- end
27
-
28
- include AASM
29
-
30
- aasm :column => :status, :whiny_persistence => true do
31
- before_all_transactions :before_all_transactions
32
- after_all_transactions :after_all_transactions
33
-
34
- state :sleeping, :initial => true
35
- state :running
36
- state :failed, :after_enter => :fail
37
-
38
- event :run, :after_commit => :change_name! do
39
- after_transaction do
40
- @after_transaction_performed_on_run = true
41
- end
42
-
43
- before_transaction do
44
- @before_transaction_performed_on_run = true
45
- end
46
-
47
- transitions :to => :running, :from => :sleeping
48
- end
49
-
50
- event :sleep do
51
- after_commit do |name|
52
- change_name_on_sleep name
53
- end
54
- transitions :to => :sleeping, :from => :running
55
- end
56
-
57
- event :fail do
58
- after_transaction do
59
- @after_transaction_performed_on_fail = true
60
- end
61
-
62
- before_transaction do
63
- @before_transaction_performed_on_fail = true
64
- end
65
-
66
- transitions :to => :failed, :from => [:sleeping, :running]
67
- end
68
- end
69
-
70
- def change_name!
71
- self.name = "name changed"
72
- save(raise_on_failure: true)
73
- end
74
-
75
- def change_name_on_sleep name
76
- self.name = name
77
- save(raise_on_failure: true)
78
- end
79
-
80
- def fail
81
- raise StandardError.new('failed on purpose')
82
- end
83
-
84
- def after_all_transactions
85
- @after_all_transactions_performed = true
86
- end
87
-
88
- def before_all_transactions
89
- @before_all_transactions_performed = true
90
- end
91
- end
92
-
93
- end
@@ -1,12 +0,0 @@
1
- db = Sequel::DATABASES.first || Sequel.connect(SEQUEL_DB)
2
-
3
- db.create_table(:workers) do
4
- primary_key :id
5
- String "name"
6
- String "status"
7
- end
8
-
9
- module Sequel
10
- class Worker < Sequel::Model(:workers)
11
- end
12
- end
@@ -1,27 +0,0 @@
1
- class Silencer
2
- include AASM
3
-
4
- # yes, this line is here on purpose
5
- # by this, we test if overriding configuration options works if
6
- # the state machine is "re-opened"
7
- aasm :whiny_transitions => true
8
-
9
- aasm :whiny_transitions => false do
10
- state :silent, :initial => true
11
- state :crying
12
- state :smiling
13
-
14
- event :cry do
15
- transitions :from => :silent, :to => :crying
16
- end
17
-
18
- event :smile do
19
- transitions :from => :crying, :to => :smiling
20
- end
21
-
22
- event :smile_any do
23
- transitions :to => :smiling
24
- end
25
- end
26
-
27
- end
@@ -1,53 +0,0 @@
1
- class CustomAASMBase < AASM::Base
2
- # A custom transiton that we want available across many AASM models.
3
- def count_transitions!
4
- klass.class_eval do
5
- aasm :with_klass => CustomAASMBase do
6
- after_all_transitions :increment_transition_count
7
- end
8
- end
9
- end
10
-
11
- # A custom annotation that we want available across many AASM models.
12
- def requires_guards!
13
- klass.class_eval do
14
- attr_reader :authorizable_called,
15
- :transition_count,
16
- :fillable_called
17
-
18
- def authorizable?
19
- @authorizable_called = true
20
- end
21
-
22
- def fillable?
23
- @fillable_called = true
24
- end
25
-
26
- def increment_transition_count
27
- @transition_count ||= 0
28
- @transition_count += 1
29
- end
30
- end
31
- end
32
- end
33
-
34
- class SimpleCustomExample
35
- include AASM
36
-
37
- # Let's build an AASM state machine with our custom class.
38
- aasm :with_klass => CustomAASMBase do
39
- requires_guards!
40
- count_transitions!
41
-
42
- state :initialised, :initial => true
43
- state :filled_out
44
- state :authorised
45
-
46
- event :fill_out do
47
- transitions :from => :initialised, :to => :filled_out, :guard => :fillable?
48
- end
49
- event :authorise do
50
- transitions :from => :filled_out, :to => :authorised, :guard => :authorizable?
51
- end
52
- end
53
- end
@@ -1,23 +0,0 @@
1
- class SimpleExample
2
- include AASM
3
- aasm do
4
- state :initialised, :initial => true
5
- state :filled_out
6
- state :denied
7
- state :authorised
8
-
9
- event :fill_out do
10
- transitions :from => :initialised, :to => :filled_out
11
- end
12
-
13
- event :deny do
14
- transitions from: :initialised, to: :denied
15
- end
16
-
17
- event :authorise do
18
- transitions :from => :filled_out, :to => :authorised
19
- end
20
-
21
- end
22
-
23
- end
@@ -1,17 +0,0 @@
1
- class SimpleExampleWithGuardArgs
2
- include AASM
3
- aasm do
4
- state :initialised, :initial => true
5
- state :filled_out_with_args
6
-
7
- event :fill_out_with_args do
8
- transitions :guard => [:arg_is_valid?],
9
- :from => :initialised,
10
- :to => :filled_out_with_args
11
- end
12
- end
13
-
14
- def arg_is_valid?(arg)
15
- return arg
16
- end
17
- end
@@ -1,42 +0,0 @@
1
- class SimpleMultipleExample
2
- include AASM
3
- aasm(:move) do
4
- state :standing, :initial => true
5
- state :walking
6
- state :running
7
-
8
- event :walk do
9
- transitions :from => :standing, :to => :walking
10
- end
11
- event :run do
12
- transitions :from => [:standing, :walking], :to => :running
13
- end
14
- event :hold do
15
- transitions :from => [:walking, :running], :to => :standing
16
- end
17
- end
18
-
19
- aasm(:work) do
20
- state :sleeping, :initial => true
21
- state :processing
22
-
23
- event :start do
24
- transitions :from => :sleeping, :to => :processing
25
- end
26
- event :stop do
27
- transitions :from => :processing, :to => :sleeping
28
- end
29
- end
30
-
31
- aasm(:question) do
32
- state :answered, :initial => true
33
- state :asked
34
-
35
- event :ask, :binding_event => :start do
36
- transitions :from => :answered, :to => :asked
37
- end
38
- event :answer, :binding_event => :stop do
39
- transitions :from => :asked, :to => :answered
40
- end
41
- end
42
- end
@@ -1,20 +0,0 @@
1
- class StateMachineWithFailedEvent
2
- include AASM
3
-
4
- aasm do
5
- state :init, :initial => true
6
- state :failed
7
- state :sent
8
-
9
- event :failed do
10
- transitions :from => :init, :to => :failed
11
- end
12
- event :send, :before => :callback do
13
- transitions :from => :init, :to => :sent
14
- end
15
- end
16
-
17
- def callback
18
- true
19
- end
20
- end
@@ -1,8 +0,0 @@
1
- class StatesOnOneLineExample
2
- include AASM
3
-
4
- aasm :one_line do
5
- state :initial, :initial => true
6
- state :first, :second
7
- end
8
- end
@@ -1,41 +0,0 @@
1
- require_relative 'super_class'
2
-
3
- class SubClass < SuperClass
4
- # Add an after callback that is not defined in the parent
5
- aasm.state_machine.events[:foo].options[:after] = [:after_foo_event]
6
-
7
- # Add global callback that is not defined in the parent
8
- aasm.state_machine.global_callbacks[:after_all_transitions] = :after_all_event
9
-
10
- attr_accessor :called_after
11
-
12
- def after_foo_event
13
- self.called_after = true
14
- end
15
-
16
- def after_all_event; end
17
- end
18
-
19
- class SubClassMultiple < SuperClassMultiple
20
- # Add after callbacks that are not defined in the parent
21
- aasm(:left).state_machine.events[:foo].options[:after] = [:left_after_foo_event]
22
- aasm(:right).state_machine.events[:close].options[:after] = [:right_after_close_event]
23
-
24
- # Add global callback that is not defined in the parent
25
- aasm(:left).state_machine.global_callbacks[:after_all_transitions] = :left_after_all_event
26
- aasm(:right).state_machine.global_callbacks[:after_all_transitions] = :right_after_all_event
27
-
28
- attr_accessor :left_called_after, :right_called_after
29
-
30
- def left_after_foo_event
31
- self.left_called_after = true
32
- end
33
-
34
- def right_after_close_event
35
- self.right_called_after = true
36
- end
37
-
38
- def left_after_all_event; end
39
-
40
- def right_after_all_event; end
41
- end
@@ -1,18 +0,0 @@
1
- require_relative 'super_class'
2
-
3
- class SubClassWithMoreStates < SuperClass
4
- include AASM
5
- aasm do
6
- state :foo
7
- end
8
- end
9
-
10
- class SubClassWithMoreStatesMultiple < SuperClassMultiple
11
- include AASM
12
- aasm(:left) do
13
- state :foo
14
- end
15
- aasm(:right) do
16
- state :archived
17
- end
18
- end
@@ -1,3 +0,0 @@
1
- class SubClassing < Silencer
2
-
3
- end
@@ -1,46 +0,0 @@
1
- class SuperClass
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
-
13
- def update_state
14
- if may_foo?
15
- foo!
16
- end
17
- end
18
- end
19
-
20
- class SuperClassMultiple
21
- include AASM
22
-
23
- aasm(:left) do
24
- state :read
25
- state :ended
26
-
27
- event :foo do
28
- transitions :to => :ended, :from => [:read]
29
- end
30
- end
31
-
32
- aasm(:right) do
33
- state :opened
34
- state :closed
35
-
36
- event :close do
37
- transitions :to => :closed, :from => [:opened]
38
- end
39
- end
40
-
41
- def update_state
42
- if may_foo?
43
- foo!
44
- end
45
- end
46
- end
@@ -1,11 +0,0 @@
1
- class ThisNameBetterNotBeInUse
2
- include AASM
3
-
4
- aasm do
5
- state :initial
6
- state :symbol
7
- state :string
8
- state :array
9
- state :proc
10
- end
11
- end
@@ -1,23 +0,0 @@
1
- class ValidStateName
2
- include AASM
3
- aasm do
4
- state :invalid, :initial => true
5
- state :valid
6
-
7
- event :valid do
8
- transitions :to => :valid, :from => [:invalid]
9
- end
10
- end
11
- end
12
-
13
- class ValidStateNameMultiple
14
- include AASM
15
- aasm(:left) do
16
- state :invalid, :initial => true
17
- state :valid
18
-
19
- event :valid do
20
- transitions :to => :valid, :from => [:invalid]
21
- end
22
- end
23
- end
data/spec/spec_helper.rb DELETED
@@ -1,36 +0,0 @@
1
- require 'simplecov'
2
- SimpleCov.start do
3
- add_filter '/spec/'
4
- end
5
-
6
- if ENV['CI'] == 'true'
7
- require 'codecov'
8
- SimpleCov.formatter = SimpleCov::Formatter::Codecov
9
- end
10
-
11
- $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__)))
12
- $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib')))
13
- require 'aasm'
14
- require 'rspec'
15
- require 'aasm/rspec'
16
- require 'pry'
17
-
18
- # require 'ruby-debug'; Debugger.settings[:autoeval] = true; debugger; rubys_debugger = 'annoying'
19
- # require 'ruby-debug/completion'
20
- # require 'pry'
21
-
22
- SEQUEL_DB = defined?(JRUBY_VERSION) ? 'jdbc:sqlite::memory:' : 'sqlite:/'
23
-
24
- def load_schema
25
- require 'logger'
26
- config = YAML::load(IO.read(File.dirname(__FILE__) + '/database.yml'))
27
- ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/debug.log")
28
- ActiveRecord::Base.establish_connection(config['sqlite3'])
29
- require File.dirname(__FILE__) + "/database.rb"
30
- end
31
-
32
- # custom spec helpers
33
- Dir[File.dirname(__FILE__) + "/spec_helpers/**/*.rb"].sort.each { |f| require File.expand_path(f) }
34
-
35
- # example model classes
36
- Dir[File.dirname(__FILE__) + "/models/*.rb"].sort.each { |f| require File.expand_path(f) }
@@ -1,8 +0,0 @@
1
- # encoding: utf-8
2
- begin
3
- require 'active_record'
4
-
5
- puts "active_record #{ActiveRecord::VERSION::STRING} gem found, running ActiveRecord specs \e[32m#{'✔'}\e[0m"
6
- rescue LoadError
7
- puts "active_record gem not found, not running ActiveRecord specs \e[31m#{'✖'}\e[0m"
8
- end
@@ -1,35 +0,0 @@
1
- # encoding: utf-8
2
-
3
- begin
4
- require 'dynamoid'
5
- require 'aws-sdk-resources'
6
- puts "dynamoid #{Dynamoid::VERSION} gem found, running Dynamoid specs \e[32m#{'✔'}\e[0m"
7
-
8
- ENV['ACCESS_KEY'] ||= 'abcd'
9
- ENV['SECRET_KEY'] ||= '1234'
10
-
11
- Aws.config.update(
12
- region: 'us-west-2',
13
- credentials: Aws::Credentials.new(ENV['ACCESS_KEY'], ENV['SECRET_KEY'])
14
- )
15
-
16
- Dynamoid.configure do |config|
17
- config.namespace = 'dynamoid_tests'
18
- config.endpoint = "http://#{ENV['DYNAMODB_HOST'] || '127.0.0.1'}:" \
19
- "#{ENV['DYNAMODB_PORT'] || 30180}"
20
- config.warn_on_scan = false
21
- end
22
-
23
- Dynamoid.logger.level = Logger::FATAL
24
-
25
- RSpec.configure do |c|
26
- c.before(:each) do
27
- Dynamoid.adapter.list_tables.each do |table|
28
- Dynamoid.adapter.delete_table(table) if table =~ /^#{Dynamoid::Config.namespace}/
29
- end
30
- Dynamoid.adapter.tables.clear
31
- end
32
- end
33
- rescue LoadError
34
- puts "dynamoid gem not found, not running Dynamoid specs \e[31m#{'✖'}\e[0m"
35
- end
@@ -1,26 +0,0 @@
1
- # encoding: utf-8
2
-
3
- begin
4
- require 'mongoid'
5
- puts "mongoid #{Mongoid::VERSION} gem found, running mongoid specs \e[32m#{'✔'}\e[0m"
6
-
7
- if Mongoid::VERSION.to_f <= 5
8
- Mongoid::Config.sessions = {
9
- default: {
10
- database: "mongoid_#{Process.pid}",
11
- hosts: ["#{ENV['MONGODB_HOST'] || 'localhost'}:" \
12
- "#{ENV['MONGODB_PORT'] || 27017}"]
13
- }
14
- }
15
- else
16
- Mongoid::Config.send(:clients=, {
17
- default: {
18
- database: "mongoid_#{Process.pid}",
19
- hosts: ["#{ENV['MONGODB_HOST'] || 'localhost'}:" \
20
- "#{ENV['MONGODB_PORT'] || 27017}"]
21
- }
22
- })
23
- end
24
- rescue LoadError
25
- puts "mongoid gem not found, not running mongoid specs \e[31m#{'✖'}\e[0m"
26
- end
@@ -1,15 +0,0 @@
1
- # encoding: utf-8
2
-
3
- begin
4
- require 'nobrainer'
5
-
6
- NoBrainer.configure do |config|
7
- config.app_name = :aasm
8
- config.environment = :test
9
- config.warn_on_active_record = false
10
- end
11
-
12
- puts "nobrainer #{Gem.loaded_specs['nobrainer'].version} gem found, running nobrainer specs \e[32m#{'✔'}\e[0m"
13
- rescue LoadError
14
- puts "nobrainer gem not found, not running nobrainer specs \e[31m#{'✖'}\e[0m"
15
- end