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.
- checksums.yaml +5 -5
- data/README.md +284 -119
- data/lib/aasm/aasm.rb +30 -27
- data/lib/aasm/base.rb +61 -11
- data/lib/aasm/configuration.rb +3 -0
- data/lib/aasm/core/event.rb +26 -30
- data/lib/aasm/core/invoker.rb +129 -0
- data/lib/aasm/core/invokers/base_invoker.rb +75 -0
- data/lib/aasm/core/invokers/class_invoker.rb +52 -0
- data/lib/aasm/core/invokers/literal_invoker.rb +49 -0
- data/lib/aasm/core/invokers/proc_invoker.rb +59 -0
- data/lib/aasm/core/state.rb +16 -14
- data/lib/aasm/core/transition.rb +8 -69
- data/lib/aasm/dsl_helper.rb +24 -22
- data/lib/aasm/errors.rb +5 -3
- 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 +105 -0
- data/lib/aasm/persistence/orm.rb +23 -19
- data/lib/aasm/persistence/plain_persistence.rb +2 -1
- data/lib/aasm/persistence/redis_persistence.rb +1 -1
- data/lib/aasm/persistence/sequel_persistence.rb +0 -1
- data/lib/aasm/persistence.rb +3 -0
- data/lib/aasm/rspec/allow_event.rb +5 -1
- data/lib/aasm/rspec/allow_transition_to.rb +5 -1
- data/lib/aasm/rspec/transition_from.rb +5 -1
- data/lib/aasm/version.rb +1 -1
- data/lib/aasm.rb +5 -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
- data/lib/generators/nobrainer/aasm_generator.rb +28 -0
- data/lib/motion-aasm.rb +1 -0
- metadata +42 -344
- data/.document +0 -6
- data/.gitignore +0 -20
- data/.travis.yml +0 -52
- data/API +0 -34
- data/Appraisals +0 -43
- data/CHANGELOG.md +0 -370
- data/CODE_OF_CONDUCT.md +0 -13
- data/CONTRIBUTING.md +0 -24
- data/Gemfile +0 -7
- 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/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_5.0.gemfile +0 -14
- 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/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/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 -15
- 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 -7
- data/spec/spec_helpers/dynamoid.rb +0 -33
- data/spec/spec_helpers/mongoid.rb +0 -7
- data/spec/spec_helpers/redis.rb +0 -15
- 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/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 -204
- data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -169
- 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 -79
- 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
@@ -1,47 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
if defined?(ActiveRecord)
|
4
|
-
require 'generator_spec'
|
5
|
-
require 'generators/active_record/aasm_generator'
|
6
|
-
|
7
|
-
describe ActiveRecord::Generators::AASMGenerator, type: :generator do
|
8
|
-
destination File.expand_path("../../../tmp", __FILE__)
|
9
|
-
|
10
|
-
before(:all) do
|
11
|
-
prepare_destination
|
12
|
-
end
|
13
|
-
|
14
|
-
it "creates model with aasm block for default column_name" do
|
15
|
-
run_generator %w(user)
|
16
|
-
assert_file "app/models/user.rb", /include AASM\n\n aasm do\n end\n/
|
17
|
-
end
|
18
|
-
|
19
|
-
it "creates model with aasm block for custom column_name" do
|
20
|
-
run_generator %w(user state)
|
21
|
-
assert_file "app/models/user.rb", /aasm :column => 'state' do\n end\n/
|
22
|
-
end
|
23
|
-
|
24
|
-
it "creates model with aasm block for namespaced model" do
|
25
|
-
run_generator %w(Admin::User state)
|
26
|
-
assert_file "app/models/admin/user.rb", /aasm :column => 'state' do\n end\n/
|
27
|
-
end
|
28
|
-
|
29
|
-
it "creates migration for model with aasm_column" do
|
30
|
-
run_generator %w(post)
|
31
|
-
assert_migration "db/migrate/aasm_create_posts.rb", /create_table(:posts) do |t|\n t.string :aasm_state\n/
|
32
|
-
end
|
33
|
-
|
34
|
-
it "add aasm_column in existing model" do
|
35
|
-
run_generator %w(job)
|
36
|
-
assert_file "app/models/job.rb"
|
37
|
-
run_generator %w(job)
|
38
|
-
assert_migration "db/migrate/add_aasm_state_to_jobs.rb"
|
39
|
-
end
|
40
|
-
|
41
|
-
it "add custom aasm_column in existing model" do
|
42
|
-
run_generator %w(job state)
|
43
|
-
assert_migration "db/migrate/add_state_to_jobs.rb"
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
if defined?(Mongoid::Document)
|
4
|
-
require 'generator_spec'
|
5
|
-
require 'generators/mongoid/aasm_generator'
|
6
|
-
|
7
|
-
describe Mongoid::Generators::AASMGenerator, type: :generator do
|
8
|
-
destination File.expand_path("../../../tmp", __FILE__)
|
9
|
-
|
10
|
-
before(:all) do
|
11
|
-
prepare_destination
|
12
|
-
end
|
13
|
-
|
14
|
-
it "creates model with aasm block for default column_name" do
|
15
|
-
run_generator %w(user)
|
16
|
-
assert_file "app/models/user.rb", /include AASM\n\n aasm do\n end\n/
|
17
|
-
end
|
18
|
-
|
19
|
-
it "creates model with aasm block for custom column_name" do
|
20
|
-
run_generator %w(user state)
|
21
|
-
assert_file "app/models/user.rb", /aasm :column => 'state' do\n end\n/
|
22
|
-
end
|
23
|
-
|
24
|
-
it "creates model with aasm block for namespaced model" do
|
25
|
-
run_generator %w(Admin::User state)
|
26
|
-
assert_file "app/models/admin/user.rb", /aasm :column => 'state' do\n end\n/
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
class BasicActiveRecordTwoStateMachinesExample < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm :search do
|
5
|
-
state :initialised, :initial => true
|
6
|
-
state :queried
|
7
|
-
state :requested
|
8
|
-
|
9
|
-
event :query do
|
10
|
-
transitions :from => [:initialised, :requested], :to => :queried
|
11
|
-
end
|
12
|
-
event :request do
|
13
|
-
transitions :from => :queried, :to => :requested
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
aasm :sync do
|
18
|
-
state :unsynced, :initial => true
|
19
|
-
state :synced
|
20
|
-
|
21
|
-
event :synchronise do
|
22
|
-
transitions :from => :unsynced, :to => :synced
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
class ComplexActiveRecordExample < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm :left, :column => 'left' do
|
5
|
-
state :one, :initial => true
|
6
|
-
state :two
|
7
|
-
state :three
|
8
|
-
|
9
|
-
event :increment do
|
10
|
-
transitions :from => :one, :to => :two, guard: :allowed?
|
11
|
-
transitions :from => :two, :to => :three
|
12
|
-
end
|
13
|
-
event :reset do
|
14
|
-
transitions :from => :three, :to => :one
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def allowed?
|
19
|
-
true
|
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,35 +0,0 @@
|
|
1
|
-
class FalseState < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
def initialize(*args)
|
5
|
-
super
|
6
|
-
self.aasm_state = false
|
7
|
-
end
|
8
|
-
|
9
|
-
aasm do
|
10
|
-
state :opened
|
11
|
-
state :closed
|
12
|
-
|
13
|
-
event :view do
|
14
|
-
transitions :to => :read, :from => [:needs_attention]
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
class MultipleFalseState < ActiveRecord::Base
|
20
|
-
include AASM
|
21
|
-
|
22
|
-
def initialize(*args)
|
23
|
-
super
|
24
|
-
self.aasm_state = false
|
25
|
-
end
|
26
|
-
|
27
|
-
aasm :left do
|
28
|
-
state :opened
|
29
|
-
state :closed
|
30
|
-
|
31
|
-
event :view do
|
32
|
-
transitions :to => :read, :from => [:needs_attention]
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
class Gate < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
# Fake this column for testing purposes
|
5
|
-
# attr_accessor :aasm_state
|
6
|
-
|
7
|
-
def value
|
8
|
-
'value'
|
9
|
-
end
|
10
|
-
|
11
|
-
aasm do
|
12
|
-
state :opened
|
13
|
-
state :closed
|
14
|
-
|
15
|
-
event :view do
|
16
|
-
transitions :to => :read, :from => [:needs_attention]
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
class MultipleGate < ActiveRecord::Base
|
22
|
-
include AASM
|
23
|
-
|
24
|
-
# Fake this column for testing purposes
|
25
|
-
# attr_accessor :aasm_state
|
26
|
-
|
27
|
-
def value
|
28
|
-
'value'
|
29
|
-
end
|
30
|
-
|
31
|
-
aasm :left, :column => :aasm_state do
|
32
|
-
state :opened
|
33
|
-
state :closed
|
34
|
-
|
35
|
-
event :view do
|
36
|
-
transitions :to => :read, :from => [:needs_attention]
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
class InvalidPersistor < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
aasm :column => :status, :skip_validation_on_save => true do
|
4
|
-
state :sleeping, :initial => true
|
5
|
-
state :running
|
6
|
-
event :run do
|
7
|
-
transitions :to => :running, :from => :sleeping
|
8
|
-
end
|
9
|
-
event :sleep do
|
10
|
-
transitions :to => :sleeping, :from => :running
|
11
|
-
end
|
12
|
-
end
|
13
|
-
validates_presence_of :name
|
14
|
-
end
|
15
|
-
|
16
|
-
class MultipleInvalidPersistor < ActiveRecord::Base
|
17
|
-
include AASM
|
18
|
-
aasm :left, :column => :status, :skip_validation_on_save => true do
|
19
|
-
state :sleeping, :initial => true
|
20
|
-
state :running
|
21
|
-
event :run do
|
22
|
-
transitions :to => :running, :from => :sleeping
|
23
|
-
end
|
24
|
-
event :sleep do
|
25
|
-
transitions :to => :sleeping, :from => :running
|
26
|
-
end
|
27
|
-
end
|
28
|
-
validates_presence_of :name
|
29
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
class LocalizerTestModel < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm do
|
5
|
-
state :opened, :initial => true
|
6
|
-
state :closed
|
7
|
-
event :close
|
8
|
-
event :open
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
describe 'localized state names' do
|
13
|
-
before(:all) do
|
14
|
-
I18n.load_path << 'spec/en.yml'
|
15
|
-
I18n.default_locale = :en
|
16
|
-
I18n.reload!
|
17
|
-
end
|
18
|
-
|
19
|
-
after(:all) do
|
20
|
-
I18n.load_path.clear
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'should localize' do
|
24
|
-
state = LocalizerTestModel.aasm.states.detect {|s| s == :opened}
|
25
|
-
expect(state.localized_name).to eq("It's open now!")
|
26
|
-
expect(state.human_name).to eq("It's open now!")
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'should use fallback' do
|
30
|
-
state = LocalizerTestModel.aasm.states.detect {|s| s == :closed}
|
31
|
-
expect(state.localized_name).to eq('Closed')
|
32
|
-
expect(state.human_name).to eq('Closed')
|
33
|
-
end
|
34
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class NoDirectAssignment < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
aasm :no_direct_assignment => true do
|
4
|
-
state :pending, :initial => true
|
5
|
-
state :running
|
6
|
-
event :run do
|
7
|
-
transitions :from => :pending, :to => :running
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class MultipleNoDirectAssignment < ActiveRecord::Base
|
13
|
-
include AASM
|
14
|
-
aasm :left, :column => :aasm_state, :no_direct_assignment => true do
|
15
|
-
state :pending, :initial => true
|
16
|
-
state :running
|
17
|
-
event :run do
|
18
|
-
transitions :from => :pending, :to => :running
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class NoScope < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
aasm :create_scopes => false do
|
4
|
-
state :pending, :initial => true
|
5
|
-
state :running
|
6
|
-
event :run do
|
7
|
-
transitions :from => :pending, :to => :running
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
class MultipleNoScope < ActiveRecord::Base
|
13
|
-
include AASM
|
14
|
-
aasm :left, :column => :aasm_state, :create_scopes => false do
|
15
|
-
state :pending, :initial => true
|
16
|
-
state :running
|
17
|
-
event :run do
|
18
|
-
transitions :from => :pending, :to => :running
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
class PersistedState < ActiveRecord::Base
|
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,24 +0,0 @@
|
|
1
|
-
class ProvidedAndPersistedState < ActiveRecord::Base
|
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
|
-
|
13
|
-
def aasm_read_state(*args)
|
14
|
-
:gamma
|
15
|
-
end
|
16
|
-
|
17
|
-
def aasm_write_state(new_state, *args)
|
18
|
-
@persisted_store = new_state
|
19
|
-
end
|
20
|
-
|
21
|
-
def aasm_write_state_without_persistence(new_state, *args)
|
22
|
-
@transient_store = new_state
|
23
|
-
end
|
24
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class ReadmeJob < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm do
|
5
|
-
state :sleeping, :initial => true
|
6
|
-
state :running
|
7
|
-
state :cleaning
|
8
|
-
|
9
|
-
event :run do
|
10
|
-
transitions :from => :sleeping, :to => :running
|
11
|
-
end
|
12
|
-
|
13
|
-
event :clean do
|
14
|
-
transitions :from => :running, :to => :cleaning
|
15
|
-
end
|
16
|
-
|
17
|
-
event :sleep do
|
18
|
-
transitions :from => [:running, :cleaning], :to => :sleeping
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
class SilentPersistor < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
aasm :column => :status, :whiny_persistence => false do
|
4
|
-
state :sleeping, :initial => true
|
5
|
-
state :running
|
6
|
-
event :run do
|
7
|
-
transitions :to => :running, :from => :sleeping
|
8
|
-
end
|
9
|
-
event :sleep do
|
10
|
-
transitions :to => :sleeping, :from => :running
|
11
|
-
end
|
12
|
-
end
|
13
|
-
validates_presence_of :name
|
14
|
-
end
|
15
|
-
|
16
|
-
class MultipleSilentPersistor < ActiveRecord::Base
|
17
|
-
include AASM
|
18
|
-
aasm :left, :column => :status, :whiny_persistence => false do
|
19
|
-
state :sleeping, :initial => true
|
20
|
-
state :running
|
21
|
-
event :run do
|
22
|
-
transitions :to => :running, :from => :sleeping
|
23
|
-
end
|
24
|
-
event :sleep do
|
25
|
-
transitions :to => :sleeping, :from => :running
|
26
|
-
end
|
27
|
-
end
|
28
|
-
validates_presence_of :name
|
29
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
class SimpleNewDsl < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
aasm :column => :status
|
4
|
-
aasm do
|
5
|
-
state :unknown_scope, :another_unknown_scope
|
6
|
-
state :new
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
class MultipleSimpleNewDsl < ActiveRecord::Base
|
11
|
-
include AASM
|
12
|
-
aasm :left, :column => :status
|
13
|
-
aasm :left do
|
14
|
-
state :unknown_scope, :another_unknown_scope
|
15
|
-
state :new
|
16
|
-
end
|
17
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
class Thief < ActiveRecord::Base
|
2
|
-
if ActiveRecord::VERSION::MAJOR >= 3
|
3
|
-
self.table_name = 'thieves'
|
4
|
-
else
|
5
|
-
set_table_name "thieves"
|
6
|
-
end
|
7
|
-
include AASM
|
8
|
-
aasm do
|
9
|
-
state :rich
|
10
|
-
state :jailed
|
11
|
-
initial_state Proc.new {|thief| thief.skilled ? :rich : :jailed }
|
12
|
-
end
|
13
|
-
attr_accessor :skilled, :aasm_state
|
14
|
-
end
|
15
|
-
|
16
|
-
class MultipleThief < ActiveRecord::Base
|
17
|
-
if ActiveRecord::VERSION::MAJOR >= 3
|
18
|
-
self.table_name = 'multiple_thieves'
|
19
|
-
else
|
20
|
-
set_table_name "multiple_thieves"
|
21
|
-
end
|
22
|
-
include AASM
|
23
|
-
aasm :left, :column => :aasm_state do
|
24
|
-
state :rich
|
25
|
-
state :jailed
|
26
|
-
initial_state Proc.new {|thief| thief.skilled ? :rich : :jailed }
|
27
|
-
end
|
28
|
-
attr_accessor :skilled, :aasm_state
|
29
|
-
end
|
@@ -1,124 +0,0 @@
|
|
1
|
-
class Transactor < ActiveRecord::Base
|
2
|
-
|
3
|
-
belongs_to :worker
|
4
|
-
|
5
|
-
include AASM
|
6
|
-
aasm :column => :status do
|
7
|
-
state :sleeping, :initial => true
|
8
|
-
state :running, :before_enter => :start_worker, :after_enter => :fail
|
9
|
-
|
10
|
-
event :run do
|
11
|
-
transitions :to => :running, :from => :sleeping
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
private
|
16
|
-
|
17
|
-
def start_worker
|
18
|
-
worker.update_attribute(:status, 'running')
|
19
|
-
end
|
20
|
-
|
21
|
-
def fail
|
22
|
-
raise StandardError.new('failed on purpose')
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
26
|
-
|
27
|
-
class NoLockTransactor < ActiveRecord::Base
|
28
|
-
|
29
|
-
belongs_to :worker
|
30
|
-
|
31
|
-
include AASM
|
32
|
-
|
33
|
-
aasm :column => :status do
|
34
|
-
state :sleeping, :initial => true
|
35
|
-
state :running
|
36
|
-
|
37
|
-
event :run do
|
38
|
-
transitions :to => :running, :from => :sleeping
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
class LockTransactor < ActiveRecord::Base
|
44
|
-
|
45
|
-
belongs_to :worker
|
46
|
-
|
47
|
-
include AASM
|
48
|
-
|
49
|
-
aasm :column => :status, requires_lock: true do
|
50
|
-
state :sleeping, :initial => true
|
51
|
-
state :running
|
52
|
-
|
53
|
-
event :run do
|
54
|
-
transitions :to => :running, :from => :sleeping
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
class LockNoWaitTransactor < ActiveRecord::Base
|
60
|
-
|
61
|
-
belongs_to :worker
|
62
|
-
|
63
|
-
include AASM
|
64
|
-
|
65
|
-
aasm :column => :status, requires_lock: 'FOR UPDATE NOWAIT' do
|
66
|
-
state :sleeping, :initial => true
|
67
|
-
state :running
|
68
|
-
|
69
|
-
event :run do
|
70
|
-
transitions :to => :running, :from => :sleeping
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
class NoTransactor < ActiveRecord::Base
|
76
|
-
|
77
|
-
belongs_to :worker
|
78
|
-
|
79
|
-
include AASM
|
80
|
-
aasm :column => :status, use_transactions: false do
|
81
|
-
state :sleeping, :initial => true
|
82
|
-
state :running, :before_enter => :start_worker, :after_enter => :fail
|
83
|
-
|
84
|
-
event :run do
|
85
|
-
transitions :to => :running, :from => :sleeping
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
private
|
90
|
-
|
91
|
-
def start_worker
|
92
|
-
worker.update_attribute(:status, 'running')
|
93
|
-
end
|
94
|
-
|
95
|
-
def fail
|
96
|
-
raise StandardError.new('failed on purpose')
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
class MultipleTransactor < ActiveRecord::Base
|
101
|
-
|
102
|
-
belongs_to :worker
|
103
|
-
|
104
|
-
include AASM
|
105
|
-
aasm :left, :column => :status do
|
106
|
-
state :sleeping, :initial => true
|
107
|
-
state :running, :before_enter => :start_worker, :after_enter => :fail
|
108
|
-
|
109
|
-
event :run do
|
110
|
-
transitions :to => :running, :from => :sleeping
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
private
|
115
|
-
|
116
|
-
def start_worker
|
117
|
-
worker.update_attribute(:status, 'running')
|
118
|
-
end
|
119
|
-
|
120
|
-
def fail
|
121
|
-
raise StandardError.new('failed on purpose')
|
122
|
-
end
|
123
|
-
|
124
|
-
end
|