aasm 5.1.1 → 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 +4 -4
- data/README.md +74 -15
- data/lib/aasm/base.rb +44 -12
- data/lib/aasm/configuration.rb +3 -0
- data/lib/aasm/core/event.rb +12 -6
- 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 +1 -0
- data/lib/aasm/instance_base.rb +14 -3
- data/lib/aasm/localizer.rb +13 -3
- data/lib/aasm/persistence/active_record_persistence.rb +1 -1
- data/lib/aasm/persistence/base.rb +13 -2
- data/lib/aasm/version.rb +1 -1
- data/lib/generators/aasm/orm_helpers.rb +1 -1
- data/lib/generators/active_record/templates/migration.rb +1 -1
- metadata +6 -402
- data/.document +0 -6
- data/.github/ISSUE_TEMPLATE/bug_report.md +0 -27
- data/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- data/.gitignore +0 -20
- data/.travis.yml +0 -82
- data/API +0 -34
- data/Appraisals +0 -67
- data/CHANGELOG.md +0 -442
- 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 -37
- data/docker-compose.yml +0 -40
- data/gemfiles/norails.gemfile +0 -10
- data/gemfiles/rails_4.2.gemfile +0 -17
- data/gemfiles/rails_4.2_mongoid_5.gemfile +0 -12
- data/gemfiles/rails_4.2_nobrainer.gemfile +0 -9
- data/gemfiles/rails_5.0.gemfile +0 -14
- data/gemfiles/rails_5.0_nobrainer.gemfile +0 -9
- data/gemfiles/rails_5.1.gemfile +0 -14
- data/gemfiles/rails_5.2.gemfile +0 -14
- data/spec/database.rb +0 -59
- data/spec/database.yml +0 -3
- data/spec/en.yml +0 -9
- data/spec/generators/active_record_generator_spec.rb +0 -53
- data/spec/generators/mongoid_generator_spec.rb +0 -31
- data/spec/generators/no_brainer_generator_spec.rb +0 -29
- data/spec/localizer_test_model_deprecated_style.yml +0 -6
- data/spec/localizer_test_model_new_style.yml +0 -5
- data/spec/models/active_record/active_record_callback.rb +0 -93
- 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/instance_level_skip_validation_example.rb +0 -19
- 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/person.rb +0 -23
- 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 -32
- 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/work.rb +0 -3
- 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 -34
- data/spec/models/callbacks/with_state_arg_multiple.rb +0 -29
- 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 -23
- 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 -41
- 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/abstract_class_spec.rb +0 -27
- data/spec/unit/api_spec.rb +0 -104
- data/spec/unit/basic_two_state_machines_example_spec.rb +0 -10
- data/spec/unit/callback_multiple_spec.rb +0 -304
- data/spec/unit/callbacks_spec.rb +0 -521
- data/spec/unit/complex_example_spec.rb +0 -93
- 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 -394
- 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 -205
- data/spec/unit/inspection_spec.rb +0 -153
- 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 -77
- 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 -840
- 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 -88
- data/spec/unit/simple_custom_example_spec.rb +0 -39
- data/spec/unit/simple_example_spec.rb +0 -57
- data/spec/unit/simple_multiple_example_spec.rb +0 -91
- data/spec/unit/state_spec.rb +0 -105
- 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/database.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
ActiveRecord::Migration.suppress_messages do
|
2
|
-
%w{gates multiple_gates readers writers transients simples no_scopes multiple_no_scopes no_direct_assignments multiple_no_direct_assignments thieves multiple_thieves localizer_test_models persisted_states provided_and_persisted_states with_enums with_enum_without_columns multiple_with_enum_without_columns with_true_enums with_false_enums false_states multiple_with_enums multiple_with_true_enums multiple_with_false_enums multiple_false_states readme_jobs}.each do |table_name|
|
3
|
-
ActiveRecord::Migration.create_table table_name, :force => true do |t|
|
4
|
-
t.string "aasm_state"
|
5
|
-
end
|
6
|
-
end
|
7
|
-
|
8
|
-
ActiveRecord::Migration.create_table "simple_new_dsls", :force => true do |t|
|
9
|
-
t.string "status"
|
10
|
-
end
|
11
|
-
ActiveRecord::Migration.create_table "multiple_simple_new_dsls", :force => true do |t|
|
12
|
-
t.string "status"
|
13
|
-
end
|
14
|
-
ActiveRecord::Migration.create_table "implemented_abstract_class_dsls", :force => true do |t|
|
15
|
-
t.string "status"
|
16
|
-
end
|
17
|
-
ActiveRecord::Migration.create_table "users", :force => true do |t|
|
18
|
-
t.string "status"
|
19
|
-
end
|
20
|
-
|
21
|
-
ActiveRecord::Migration.create_table "complex_active_record_examples", :force => true do |t|
|
22
|
-
t.string "left"
|
23
|
-
t.string "right"
|
24
|
-
end
|
25
|
-
|
26
|
-
ActiveRecord::Migration.create_table "works", :force => true do |t|
|
27
|
-
t.string "status"
|
28
|
-
end
|
29
|
-
|
30
|
-
%w(validators multiple_validators workers invalid_persistors multiple_invalid_persistors silent_persistors multiple_silent_persistors active_record_callbacks).each do |table_name|
|
31
|
-
ActiveRecord::Migration.create_table table_name, :force => true do |t|
|
32
|
-
t.string "name"
|
33
|
-
t.string "status"
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
%w(transactors no_lock_transactors lock_transactors lock_no_wait_transactors no_transactors multiple_transactors).each do |table_name|
|
38
|
-
ActiveRecord::Migration.create_table table_name, :force => true do |t|
|
39
|
-
t.string "name"
|
40
|
-
t.string "status"
|
41
|
-
t.integer "worker_id"
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
ActiveRecord::Migration.create_table "fathers", :force => true do |t|
|
46
|
-
t.string "aasm_state"
|
47
|
-
t.string "type"
|
48
|
-
end
|
49
|
-
|
50
|
-
ActiveRecord::Migration.create_table "basic_active_record_two_state_machines_examples", :force => true do |t|
|
51
|
-
t.string "search"
|
52
|
-
t.string "sync"
|
53
|
-
end
|
54
|
-
|
55
|
-
ActiveRecord::Migration.create_table "instance_level_skip_validation_examples", :force => true do |t|
|
56
|
-
t.string "state"
|
57
|
-
t.string "some_string"
|
58
|
-
end
|
59
|
-
end
|
data/spec/database.yml
DELETED
data/spec/en.yml
DELETED
@@ -1,53 +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
|
-
it "dont add column if column is already exists" do
|
47
|
-
require 'models/active_record/work.rb'
|
48
|
-
load_schema
|
49
|
-
run_generator %w(work status)
|
50
|
-
assert_no_migration "db/migrate/add_status_to_jobs.rb"
|
51
|
-
end
|
52
|
-
end
|
53
|
-
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,29 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
if defined?(NoBrainer::Document)
|
4
|
-
require 'generator_spec'
|
5
|
-
require 'generators/nobrainer/aasm_generator'
|
6
|
-
|
7
|
-
describe NoBrainer::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
|
-
end
|
29
|
-
end
|
@@ -1,93 +0,0 @@
|
|
1
|
-
class ActiveRecordCallback < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
def reset_data
|
5
|
-
@data = []
|
6
|
-
end
|
7
|
-
|
8
|
-
def data
|
9
|
-
@data.join(' ')
|
10
|
-
end
|
11
|
-
|
12
|
-
aasm column: :status do
|
13
|
-
before_all_events :before_all_events
|
14
|
-
after_all_events :after_all_events
|
15
|
-
ensure_on_all_events :ensure_on_all_events
|
16
|
-
after_all_transitions :after_all_transitions
|
17
|
-
|
18
|
-
state :open, :initial => true,
|
19
|
-
:before_enter => :before_enter_open,
|
20
|
-
:enter => :enter_open,
|
21
|
-
:after_enter => :after_enter_open,
|
22
|
-
:before_exit => :before_exit_open,
|
23
|
-
:exit => :exit_open,
|
24
|
-
:after_exit => :after_exit_open
|
25
|
-
|
26
|
-
state :closed,
|
27
|
-
:before_enter => :before_enter_closed,
|
28
|
-
:enter => :enter_closed,
|
29
|
-
:after_enter => :after_enter_closed,
|
30
|
-
:before_exit => :before_exit_closed,
|
31
|
-
:exit => :exit_closed,
|
32
|
-
:after_exit => :after_exit_closed
|
33
|
-
|
34
|
-
event :close,
|
35
|
-
:before => :before_event,
|
36
|
-
:after => :after_event,
|
37
|
-
:guard => :event_guard,
|
38
|
-
:before_success => :event_before_success,
|
39
|
-
:after_commit => :event_after_commit,
|
40
|
-
:ensure => :ensure_event do
|
41
|
-
transitions :to => :closed, :from => [:open],
|
42
|
-
:guard => :transition_guard,
|
43
|
-
:after => :after_transition,
|
44
|
-
:success => :success_transition
|
45
|
-
end
|
46
|
-
|
47
|
-
event :open, :before => :before_event, :after => :after_event do
|
48
|
-
transitions :to => :open, :from => :closed
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def log(text)
|
53
|
-
@data ||= []
|
54
|
-
@data << text
|
55
|
-
#puts text
|
56
|
-
end
|
57
|
-
|
58
|
-
def aasm_write_state(*args); log('aasm_write_state'); true; end
|
59
|
-
def before_enter_open; log('before_enter_open'); end
|
60
|
-
def enter_open; log('enter_open'); end
|
61
|
-
def before_exit_open; log('before_exit_open'); end
|
62
|
-
def after_enter_open; log('after_enter_open'); end
|
63
|
-
def exit_open; log('exit_open'); end
|
64
|
-
def after_exit_open; log('after_exit_open'); end
|
65
|
-
|
66
|
-
def before_enter_closed; log('before_enter_closed'); end
|
67
|
-
def enter_closed; log('enter_closed'); end
|
68
|
-
def before_exit_closed; log('before_exit_closed'); end
|
69
|
-
def exit_closed; log('exit_closed'); end
|
70
|
-
def after_enter_closed; log('after_enter_closed'); end
|
71
|
-
def after_exit_closed; log('after_exit_closed'); end
|
72
|
-
|
73
|
-
def event_guard; log('event_guard'); !@fail_event_guard; end
|
74
|
-
def transition_guard; log('transition_guard'); !@fail_transition_guard; end
|
75
|
-
|
76
|
-
def event_before_success; log('event_before_success'); end
|
77
|
-
|
78
|
-
def after_transition; log('after_transition'); end
|
79
|
-
def after_all_transitions; log('after_all_transitions'); end
|
80
|
-
|
81
|
-
def before_all_events; log('before_all_events') end
|
82
|
-
def before_event; log('before_event'); end
|
83
|
-
def after_event; log('after_event'); end
|
84
|
-
def after_all_events; log('after_all_events'); end
|
85
|
-
|
86
|
-
def after_transition; log('after_transition'); end
|
87
|
-
def success_transition; log('transition_success'); end
|
88
|
-
|
89
|
-
def ensure_event; log('ensure'); end
|
90
|
-
def ensure_on_all_events; log('ensure'); end
|
91
|
-
|
92
|
-
def event_after_commit; log('after_commit'); end
|
93
|
-
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,19 +0,0 @@
|
|
1
|
-
class InstanceLevelSkipValidationExample < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm :state do
|
5
|
-
state :new, :initial => true
|
6
|
-
state :draft
|
7
|
-
state :complete
|
8
|
-
|
9
|
-
event :set_draft do
|
10
|
-
transitions from: :new, to: :draft
|
11
|
-
end
|
12
|
-
|
13
|
-
event :complete do
|
14
|
-
transitions from: %i[draft new], to: :complete
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
validates :some_string, presence: true
|
19
|
-
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/localizer_test_model_new_style.yml'
|
15
|
-
I18n.reload!
|
16
|
-
end
|
17
|
-
|
18
|
-
after(:all) do
|
19
|
-
I18n.load_path.delete('spec/localizer_test_model_new_style.yml')
|
20
|
-
I18n.backend.load_translations
|
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,23 +0,0 @@
|
|
1
|
-
class Base < ActiveRecord::Base
|
2
|
-
include AASM
|
3
|
-
|
4
|
-
aasm column: 'status' do
|
5
|
-
state :inactive, initial: true
|
6
|
-
state :active
|
7
|
-
|
8
|
-
event :activate do
|
9
|
-
transitions from: :inactive, to: :active
|
10
|
-
end
|
11
|
-
|
12
|
-
event :deactivate do
|
13
|
-
transitions from: :active, to: :inactive
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
self.abstract_class = true
|
18
|
-
self.table_name = 'users'
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
class Person < Base
|
23
|
-
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
|