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.
- checksums.yaml +5 -5
- data/README.md +243 -118
- data/lib/aasm/aasm.rb +29 -27
- data/lib/aasm/base.rb +61 -11
- data/lib/aasm/configuration.rb +3 -0
- data/lib/aasm/core/event.rb +21 -9
- data/lib/aasm/core/invokers/class_invoker.rb +1 -1
- data/lib/aasm/core/invokers/literal_invoker.rb +3 -1
- data/lib/aasm/core/state.rb +6 -5
- data/lib/aasm/core/transition.rb +1 -1
- data/lib/aasm/dsl_helper.rb +24 -22
- data/lib/aasm/errors.rb +3 -1
- data/lib/aasm/instance_base.rb +28 -5
- data/lib/aasm/localizer.rb +13 -3
- data/lib/aasm/persistence/active_record_persistence.rb +25 -5
- data/lib/aasm/persistence/base.rb +14 -3
- data/lib/aasm/persistence/core_data_query_persistence.rb +2 -1
- data/lib/aasm/persistence/dynamoid_persistence.rb +1 -1
- data/lib/aasm/persistence/mongoid_persistence.rb +1 -1
- data/lib/aasm/persistence/no_brainer_persistence.rb +1 -1
- data/lib/aasm/persistence/orm.rb +23 -19
- data/lib/aasm/persistence/redis_persistence.rb +1 -1
- data/lib/aasm/rspec/transition_from.rb +5 -1
- data/lib/aasm/version.rb +1 -1
- data/lib/aasm.rb +0 -2
- data/lib/generators/aasm/orm_helpers.rb +7 -1
- data/lib/generators/active_record/aasm_generator.rb +3 -1
- data/lib/generators/active_record/templates/migration.rb +1 -1
- metadata +35 -385
- data/.document +0 -6
- data/.gitignore +0 -20
- data/.travis.yml +0 -54
- data/API +0 -34
- data/Appraisals +0 -66
- data/CHANGELOG.md +0 -377
- data/CODE_OF_CONDUCT.md +0 -13
- data/CONTRIBUTING.md +0 -24
- data/Dockerfile +0 -44
- data/Gemfile +0 -6
- data/Gemfile.lock_old +0 -151
- data/HOWTO +0 -12
- data/PLANNED_CHANGES.md +0 -11
- data/README_FROM_VERSION_3_TO_4.md +0 -240
- data/Rakefile +0 -31
- data/TESTING.md +0 -25
- data/aasm.gemspec +0 -35
- data/callbacks.txt +0 -51
- data/docker-compose.yml +0 -40
- data/gemfiles/rails_3.2.gemfile +0 -13
- data/gemfiles/rails_4.0.gemfile +0 -15
- data/gemfiles/rails_4.2.gemfile +0 -16
- data/gemfiles/rails_4.2_mongoid_5.gemfile +0 -11
- data/gemfiles/rails_4.2_nobrainer.gemfile +0 -9
- data/gemfiles/rails_5.0.gemfile +0 -13
- data/gemfiles/rails_5.0_nobrainer.gemfile +0 -9
- data/gemfiles/rails_5.1.gemfile +0 -13
- data/spec/database.rb +0 -44
- data/spec/database.yml +0 -3
- data/spec/en.yml +0 -12
- data/spec/en_deprecated_style.yml +0 -10
- data/spec/generators/active_record_generator_spec.rb +0 -47
- data/spec/generators/mongoid_generator_spec.rb +0 -31
- data/spec/generators/no_brainer_generator_spec.rb +0 -29
- data/spec/models/active_record/basic_active_record_two_state_machines_example.rb +0 -25
- data/spec/models/active_record/complex_active_record_example.rb +0 -37
- data/spec/models/active_record/derivate_new_dsl.rb +0 -7
- data/spec/models/active_record/false_state.rb +0 -35
- data/spec/models/active_record/gate.rb +0 -39
- data/spec/models/active_record/invalid_persistor.rb +0 -29
- data/spec/models/active_record/localizer_test_model.rb +0 -34
- data/spec/models/active_record/no_direct_assignment.rb +0 -21
- data/spec/models/active_record/no_scope.rb +0 -21
- data/spec/models/active_record/persisted_state.rb +0 -12
- data/spec/models/active_record/provided_and_persisted_state.rb +0 -24
- data/spec/models/active_record/reader.rb +0 -7
- data/spec/models/active_record/readme_job.rb +0 -21
- data/spec/models/active_record/silent_persistor.rb +0 -29
- data/spec/models/active_record/simple_new_dsl.rb +0 -17
- data/spec/models/active_record/thief.rb +0 -29
- data/spec/models/active_record/transactor.rb +0 -124
- data/spec/models/active_record/transient.rb +0 -6
- data/spec/models/active_record/validator.rb +0 -118
- data/spec/models/active_record/with_enum.rb +0 -39
- data/spec/models/active_record/with_enum_without_column.rb +0 -38
- data/spec/models/active_record/with_false_enum.rb +0 -31
- data/spec/models/active_record/with_true_enum.rb +0 -39
- data/spec/models/active_record/worker.rb +0 -2
- data/spec/models/active_record/writer.rb +0 -6
- data/spec/models/basic_two_state_machines_example.rb +0 -25
- data/spec/models/callbacks/basic.rb +0 -98
- data/spec/models/callbacks/basic_multiple.rb +0 -75
- data/spec/models/callbacks/guard_within_block.rb +0 -67
- data/spec/models/callbacks/guard_within_block_multiple.rb +0 -66
- data/spec/models/callbacks/multiple_transitions_transition_guard.rb +0 -66
- data/spec/models/callbacks/multiple_transitions_transition_guard_multiple.rb +0 -65
- data/spec/models/callbacks/private_method.rb +0 -44
- data/spec/models/callbacks/private_method_multiple.rb +0 -44
- data/spec/models/callbacks/with_args.rb +0 -62
- data/spec/models/callbacks/with_args_multiple.rb +0 -61
- data/spec/models/callbacks/with_state_arg.rb +0 -30
- data/spec/models/callbacks/with_state_arg_multiple.rb +0 -26
- data/spec/models/complex_example.rb +0 -222
- data/spec/models/conversation.rb +0 -93
- data/spec/models/default_state.rb +0 -12
- data/spec/models/double_definer.rb +0 -21
- data/spec/models/dynamoid/complex_dynamoid_example.rb +0 -37
- data/spec/models/dynamoid/dynamoid_multiple.rb +0 -18
- data/spec/models/dynamoid/dynamoid_simple.rb +0 -18
- data/spec/models/foo.rb +0 -106
- data/spec/models/foo_callback_multiple.rb +0 -45
- data/spec/models/guard_arguments_check.rb +0 -17
- data/spec/models/guard_with_params.rb +0 -24
- data/spec/models/guard_with_params_multiple.rb +0 -18
- data/spec/models/guardian.rb +0 -58
- data/spec/models/guardian_multiple.rb +0 -48
- data/spec/models/guardian_without_from_specified.rb +0 -18
- data/spec/models/initial_state_proc.rb +0 -31
- data/spec/models/mongoid/complex_mongoid_example.rb +0 -37
- data/spec/models/mongoid/invalid_persistor_mongoid.rb +0 -39
- data/spec/models/mongoid/mongoid_relationships.rb +0 -26
- data/spec/models/mongoid/no_scope_mongoid.rb +0 -21
- data/spec/models/mongoid/silent_persistor_mongoid.rb +0 -39
- data/spec/models/mongoid/simple_mongoid.rb +0 -23
- data/spec/models/mongoid/simple_new_dsl_mongoid.rb +0 -25
- data/spec/models/mongoid/validator_mongoid.rb +0 -100
- data/spec/models/multi_transitioner.rb +0 -34
- data/spec/models/multiple_transitions_that_differ_only_by_guard.rb +0 -31
- data/spec/models/namespaced_multiple_example.rb +0 -42
- data/spec/models/no_initial_state.rb +0 -25
- data/spec/models/nobrainer/complex_no_brainer_example.rb +0 -36
- data/spec/models/nobrainer/invalid_persistor_no_brainer.rb +0 -39
- data/spec/models/nobrainer/no_scope_no_brainer.rb +0 -21
- data/spec/models/nobrainer/nobrainer_relationships.rb +0 -25
- data/spec/models/nobrainer/silent_persistor_no_brainer.rb +0 -39
- data/spec/models/nobrainer/simple_new_dsl_nobrainer.rb +0 -25
- data/spec/models/nobrainer/simple_no_brainer.rb +0 -23
- data/spec/models/nobrainer/validator_no_brainer.rb +0 -98
- data/spec/models/not_auto_loaded/process.rb +0 -21
- data/spec/models/parametrised_event.rb +0 -42
- data/spec/models/parametrised_event_multiple.rb +0 -29
- data/spec/models/process_with_new_dsl.rb +0 -31
- data/spec/models/provided_state.rb +0 -24
- data/spec/models/redis/complex_redis_example.rb +0 -40
- data/spec/models/redis/redis_multiple.rb +0 -20
- data/spec/models/redis/redis_simple.rb +0 -20
- data/spec/models/sequel/complex_sequel_example.rb +0 -46
- data/spec/models/sequel/invalid_persistor.rb +0 -52
- data/spec/models/sequel/sequel_multiple.rb +0 -25
- data/spec/models/sequel/sequel_simple.rb +0 -26
- data/spec/models/sequel/silent_persistor.rb +0 -50
- data/spec/models/sequel/transactor.rb +0 -112
- data/spec/models/sequel/validator.rb +0 -93
- data/spec/models/sequel/worker.rb +0 -12
- data/spec/models/silencer.rb +0 -27
- data/spec/models/simple_custom_example.rb +0 -53
- data/spec/models/simple_example.rb +0 -17
- data/spec/models/simple_example_with_guard_args.rb +0 -17
- data/spec/models/simple_multiple_example.rb +0 -42
- data/spec/models/state_machine_with_failed_event.rb +0 -20
- data/spec/models/states_on_one_line_example.rb +0 -8
- data/spec/models/sub_class.rb +0 -41
- data/spec/models/sub_class_with_more_states.rb +0 -18
- data/spec/models/sub_classing.rb +0 -3
- data/spec/models/super_class.rb +0 -46
- data/spec/models/this_name_better_not_be_in_use.rb +0 -11
- data/spec/models/valid_state_name.rb +0 -23
- data/spec/spec_helper.rb +0 -26
- data/spec/spec_helpers/active_record.rb +0 -8
- data/spec/spec_helpers/dynamoid.rb +0 -35
- data/spec/spec_helpers/mongoid.rb +0 -26
- data/spec/spec_helpers/nobrainer.rb +0 -15
- data/spec/spec_helpers/redis.rb +0 -18
- data/spec/spec_helpers/remove_warnings.rb +0 -1
- data/spec/spec_helpers/sequel.rb +0 -7
- data/spec/unit/api_spec.rb +0 -100
- data/spec/unit/basic_two_state_machines_example_spec.rb +0 -10
- data/spec/unit/callback_multiple_spec.rb +0 -300
- data/spec/unit/callbacks_spec.rb +0 -491
- data/spec/unit/complex_example_spec.rb +0 -94
- data/spec/unit/complex_multiple_example_spec.rb +0 -115
- data/spec/unit/edge_cases_spec.rb +0 -16
- data/spec/unit/event_multiple_spec.rb +0 -73
- data/spec/unit/event_naming_spec.rb +0 -16
- data/spec/unit/event_spec.rb +0 -381
- data/spec/unit/exception_spec.rb +0 -11
- data/spec/unit/guard_arguments_check_spec.rb +0 -9
- data/spec/unit/guard_multiple_spec.rb +0 -60
- data/spec/unit/guard_spec.rb +0 -89
- data/spec/unit/guard_with_params_multiple_spec.rb +0 -10
- data/spec/unit/guard_with_params_spec.rb +0 -14
- data/spec/unit/guard_without_from_specified_spec.rb +0 -10
- data/spec/unit/initial_state_multiple_spec.rb +0 -15
- data/spec/unit/initial_state_spec.rb +0 -12
- data/spec/unit/inspection_multiple_spec.rb +0 -201
- data/spec/unit/inspection_spec.rb +0 -149
- data/spec/unit/invoker_spec.rb +0 -189
- data/spec/unit/invokers/base_invoker_spec.rb +0 -72
- data/spec/unit/invokers/class_invoker_spec.rb +0 -95
- data/spec/unit/invokers/literal_invoker_spec.rb +0 -86
- data/spec/unit/invokers/proc_invoker_spec.rb +0 -86
- data/spec/unit/localizer_spec.rb +0 -78
- data/spec/unit/memory_leak_spec.rb +0 -38
- data/spec/unit/multiple_transitions_that_differ_only_by_guard_spec.rb +0 -14
- data/spec/unit/namespaced_multiple_example_spec.rb +0 -75
- data/spec/unit/new_dsl_spec.rb +0 -12
- data/spec/unit/override_warning_spec.rb +0 -94
- data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +0 -618
- data/spec/unit/persistence/active_record_persistence_spec.rb +0 -735
- data/spec/unit/persistence/dynamoid_persistence_multiple_spec.rb +0 -135
- data/spec/unit/persistence/dynamoid_persistence_spec.rb +0 -84
- data/spec/unit/persistence/mongoid_persistence_multiple_spec.rb +0 -200
- data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -165
- data/spec/unit/persistence/no_brainer_persistence_multiple_spec.rb +0 -198
- data/spec/unit/persistence/no_brainer_persistence_spec.rb +0 -158
- data/spec/unit/persistence/redis_persistence_multiple_spec.rb +0 -88
- data/spec/unit/persistence/redis_persistence_spec.rb +0 -53
- data/spec/unit/persistence/sequel_persistence_multiple_spec.rb +0 -148
- data/spec/unit/persistence/sequel_persistence_spec.rb +0 -368
- data/spec/unit/readme_spec.rb +0 -41
- data/spec/unit/reloading_spec.rb +0 -15
- data/spec/unit/rspec_matcher_spec.rb +0 -85
- data/spec/unit/simple_custom_example_spec.rb +0 -39
- data/spec/unit/simple_example_spec.rb +0 -42
- data/spec/unit/simple_multiple_example_spec.rb +0 -91
- data/spec/unit/state_spec.rb +0 -89
- data/spec/unit/states_on_one_line_example_spec.rb +0 -16
- data/spec/unit/subclassing_multiple_spec.rb +0 -74
- data/spec/unit/subclassing_spec.rb +0 -46
- data/spec/unit/transition_spec.rb +0 -436
- data/test/minitest_helper.rb +0 -57
- data/test/unit/minitest_matcher_test.rb +0 -80
data/spec/models/conversation.rb
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
class Conversation
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm do
|
5
|
-
state :needs_attention, :initial => true
|
6
|
-
state :read
|
7
|
-
state :closed
|
8
|
-
state :awaiting_response
|
9
|
-
state :junk
|
10
|
-
|
11
|
-
event :new_message do
|
12
|
-
end
|
13
|
-
|
14
|
-
event :view do
|
15
|
-
transitions :to => :read, :from => [:needs_attention]
|
16
|
-
end
|
17
|
-
|
18
|
-
event :reply do
|
19
|
-
end
|
20
|
-
|
21
|
-
event :close do
|
22
|
-
transitions :to => :closed, :from => [:read, :awaiting_response]
|
23
|
-
end
|
24
|
-
|
25
|
-
event :junk do
|
26
|
-
transitions :to => :junk, :from => [:read]
|
27
|
-
end
|
28
|
-
|
29
|
-
event :unjunk do
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def initialize(persister)
|
34
|
-
@persister = persister
|
35
|
-
end
|
36
|
-
|
37
|
-
private
|
38
|
-
|
39
|
-
def aasm_read_state
|
40
|
-
@persister.read_state
|
41
|
-
end
|
42
|
-
|
43
|
-
def aasm_write_state(state)
|
44
|
-
@persister.write_state(state)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
class ConversationMultiple
|
49
|
-
include AASM
|
50
|
-
|
51
|
-
aasm(:left) do
|
52
|
-
state :needs_attention, :initial => true
|
53
|
-
state :read
|
54
|
-
state :closed
|
55
|
-
state :awaiting_response
|
56
|
-
state :junk
|
57
|
-
|
58
|
-
event :new_message do
|
59
|
-
end
|
60
|
-
|
61
|
-
event :view do
|
62
|
-
transitions :to => :read, :from => [:needs_attention]
|
63
|
-
end
|
64
|
-
|
65
|
-
event :reply do
|
66
|
-
end
|
67
|
-
|
68
|
-
event :close do
|
69
|
-
transitions :to => :closed, :from => [:read, :awaiting_response]
|
70
|
-
end
|
71
|
-
|
72
|
-
event :junk do
|
73
|
-
transitions :to => :junk, :from => [:read]
|
74
|
-
end
|
75
|
-
|
76
|
-
event :unjunk do
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
def initialize(persister)
|
81
|
-
@persister = persister
|
82
|
-
end
|
83
|
-
|
84
|
-
private
|
85
|
-
|
86
|
-
def aasm_read_state
|
87
|
-
@persister.read_state
|
88
|
-
end
|
89
|
-
|
90
|
-
def aasm_write_state(state)
|
91
|
-
@persister.write_state(state)
|
92
|
-
end
|
93
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
class DefaultState
|
2
|
-
attr_accessor :transient_store, :persisted_store
|
3
|
-
include AASM
|
4
|
-
aasm do
|
5
|
-
state :alpha, :initial => true
|
6
|
-
state :beta
|
7
|
-
state :gamma
|
8
|
-
event :release do
|
9
|
-
transitions :from => [:alpha, :beta, :gamma], :to => :beta
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class DoubleDefiner
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm do
|
5
|
-
state :started
|
6
|
-
state :finished
|
7
|
-
|
8
|
-
event :finish do
|
9
|
-
transitions :from => :started, :to => :finished
|
10
|
-
end
|
11
|
-
|
12
|
-
# simulating a reload
|
13
|
-
state :finished, :before_enter => :do_enter
|
14
|
-
event :finish do
|
15
|
-
transitions :from => :started, :to => :finished, :after => :do_on_transition
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def do_enter; end
|
20
|
-
def do_on_transition; end
|
21
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
class ComplexDynamoidExample
|
2
|
-
include Dynamoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :left
|
6
|
-
field :right
|
7
|
-
|
8
|
-
aasm :left, :column => 'left' do
|
9
|
-
state :one, :initial => true
|
10
|
-
state :two
|
11
|
-
state :three
|
12
|
-
|
13
|
-
event :increment do
|
14
|
-
transitions :from => :one, :to => :two
|
15
|
-
transitions :from => :two, :to => :three
|
16
|
-
end
|
17
|
-
event :reset do
|
18
|
-
transitions :from => :three, :to => :one
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
aasm :right, :column => 'right' do
|
23
|
-
state :alpha, :initial => true
|
24
|
-
state :beta
|
25
|
-
state :gamma
|
26
|
-
|
27
|
-
event :level_up do
|
28
|
-
transitions :from => :alpha, :to => :beta
|
29
|
-
transitions :from => :beta, :to => :gamma
|
30
|
-
end
|
31
|
-
event :level_down do
|
32
|
-
transitions :from => :gamma, :to => :beta
|
33
|
-
transitions :from => :beta, :to => :alpha
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
class DynamoidMultiple
|
2
|
-
include Dynamoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :status
|
6
|
-
|
7
|
-
attr_accessor :default
|
8
|
-
|
9
|
-
aasm :left, :column => :status
|
10
|
-
aasm :left do
|
11
|
-
state :alpha, :initial => true
|
12
|
-
state :beta
|
13
|
-
state :gamma
|
14
|
-
event :release do
|
15
|
-
transitions :from => [:alpha, :beta, :gamma], :to => :beta
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
class DynamoidSimple
|
2
|
-
include Dynamoid::Document
|
3
|
-
include AASM
|
4
|
-
|
5
|
-
field :status
|
6
|
-
|
7
|
-
attr_accessor :default
|
8
|
-
|
9
|
-
aasm :column => :status
|
10
|
-
aasm do
|
11
|
-
state :alpha, :initial => true
|
12
|
-
state :beta
|
13
|
-
state :gamma
|
14
|
-
event :release do
|
15
|
-
transitions :from => [:alpha, :beta, :gamma], :to => :beta
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
data/spec/models/foo.rb
DELETED
@@ -1,106 +0,0 @@
|
|
1
|
-
module Fooable
|
2
|
-
def self.included(base)
|
3
|
-
base.class_eval do
|
4
|
-
aasm do
|
5
|
-
state :open, :initial => true, :before_exit => :before_exit
|
6
|
-
state :closed, :before_enter => :before_enter
|
7
|
-
state :final
|
8
|
-
|
9
|
-
event :close, :success => :success_callback do
|
10
|
-
transitions :from => [:open], :to => [:closed]
|
11
|
-
end
|
12
|
-
|
13
|
-
event :null do
|
14
|
-
transitions :from => [:open], :to => [:closed, :final], :guard => :always_false
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def always_false
|
21
|
-
false
|
22
|
-
end
|
23
|
-
|
24
|
-
def success_callback
|
25
|
-
end
|
26
|
-
|
27
|
-
def before_enter
|
28
|
-
end
|
29
|
-
|
30
|
-
def before_exit
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
class Foo
|
35
|
-
include AASM
|
36
|
-
include Fooable
|
37
|
-
end
|
38
|
-
|
39
|
-
class FooGlobal
|
40
|
-
include AASM
|
41
|
-
include Fooable
|
42
|
-
end
|
43
|
-
|
44
|
-
class FooTwo < Foo
|
45
|
-
include AASM
|
46
|
-
aasm do
|
47
|
-
state :foo
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
class FooMultiple
|
52
|
-
include AASM
|
53
|
-
|
54
|
-
aasm(:left) do
|
55
|
-
state :open, :initial => true, :before_exit => :before_exit
|
56
|
-
state :closed, :before_enter => :before_enter
|
57
|
-
state :final
|
58
|
-
|
59
|
-
event :close, :success => :success_callback do
|
60
|
-
transitions :from => [:open], :to => [:closed]
|
61
|
-
end
|
62
|
-
|
63
|
-
event :null do
|
64
|
-
transitions :from => [:open], :to => [:closed, :final], :guard => :always_false
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
aasm(:right, :column => :right) do
|
69
|
-
state :green, :initial => true
|
70
|
-
state :yellow
|
71
|
-
state :red
|
72
|
-
|
73
|
-
event :green do
|
74
|
-
transitions :from => [:yellow], :to => :green
|
75
|
-
end
|
76
|
-
event :yellow do
|
77
|
-
transitions :from => [:green, :red], :to => :yellow
|
78
|
-
end
|
79
|
-
event :red do
|
80
|
-
transitions :from => [:yellow], :to => :red
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
def always_false
|
85
|
-
false
|
86
|
-
end
|
87
|
-
|
88
|
-
def success_callback
|
89
|
-
end
|
90
|
-
|
91
|
-
def before_enter
|
92
|
-
end
|
93
|
-
def before_exit
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
class FooTwoMultiple < FooMultiple
|
98
|
-
include AASM
|
99
|
-
aasm(:left) do
|
100
|
-
state :foo
|
101
|
-
end
|
102
|
-
|
103
|
-
aasm(:right) do
|
104
|
-
state :bar
|
105
|
-
end
|
106
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
class FooCallbackMultiple
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm(:left) do
|
5
|
-
state :open, :initial => true, :before_exit => :before_exit
|
6
|
-
state :closed, :before_enter => :before_enter
|
7
|
-
state :final
|
8
|
-
|
9
|
-
event :close, :success => :success_callback do
|
10
|
-
transitions :from => [:open], :to => [:closed]
|
11
|
-
end
|
12
|
-
|
13
|
-
event :null do
|
14
|
-
transitions :from => [:open], :to => [:closed, :final], :guard => :always_false
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
aasm(:right, :column => :right) do
|
19
|
-
state :green, :initial => true
|
20
|
-
state :yellow
|
21
|
-
state :red
|
22
|
-
|
23
|
-
event :green do
|
24
|
-
transitions :from => [:yellow], :to => :green
|
25
|
-
end
|
26
|
-
event :yellow do
|
27
|
-
transitions :from => [:green, :red], :to => :yellow
|
28
|
-
end
|
29
|
-
event :red do
|
30
|
-
transitions :from => [:yellow], :to => :red
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def always_false
|
35
|
-
false
|
36
|
-
end
|
37
|
-
|
38
|
-
def success_callback
|
39
|
-
end
|
40
|
-
|
41
|
-
def before_enter
|
42
|
-
end
|
43
|
-
def before_exit
|
44
|
-
end
|
45
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
class GuardArgumentsCheck
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm do
|
5
|
-
state :new, :reviewed, :finalized
|
6
|
-
|
7
|
-
event :mark_as_reviewed,
|
8
|
-
:guard => proc { |*args| arguments_list(*args) } do
|
9
|
-
transitions :from => :new, :to => :reviewed
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
def arguments_list(arg1, arg2)
|
14
|
-
return false unless arg1.nil?
|
15
|
-
true
|
16
|
-
end
|
17
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
class GuardWithParams
|
2
|
-
include AASM
|
3
|
-
aasm do
|
4
|
-
state :new, :reviewed, :finalized
|
5
|
-
|
6
|
-
event :mark_as_reviewed do
|
7
|
-
transitions :from => :new, :to => :reviewed, :guards => [:user_is_manager?]
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def user_is_manager?(user)
|
12
|
-
ok = false
|
13
|
-
if user && user.has_role?(:manager)
|
14
|
-
ok = true
|
15
|
-
end
|
16
|
-
return ok
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
class GuardParamsClass
|
21
|
-
def has_role?(role)
|
22
|
-
true
|
23
|
-
end
|
24
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
class GuardWithParamsMultiple
|
2
|
-
include AASM
|
3
|
-
aasm(:left) do
|
4
|
-
state :new, :reviewed, :finalized
|
5
|
-
|
6
|
-
event :mark_as_reviewed do
|
7
|
-
transitions :from => :new, :to => :reviewed, :guards => [:user_is_manager?]
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
def user_is_manager?(user)
|
12
|
-
ok = false
|
13
|
-
if user.has_role? :manager
|
14
|
-
ok = true
|
15
|
-
end
|
16
|
-
return ok
|
17
|
-
end
|
18
|
-
end
|
data/spec/models/guardian.rb
DELETED
@@ -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
|