aasm 4.12.3 → 5.1.1

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 (114) hide show
  1. checksums.yaml +5 -5
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +27 -0
  3. data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  4. data/.travis.yml +48 -18
  5. data/Appraisals +50 -26
  6. data/CHANGELOG.md +75 -3
  7. data/Dockerfile +44 -0
  8. data/Gemfile +2 -3
  9. data/README.md +216 -110
  10. data/aasm.gemspec +2 -0
  11. data/docker-compose.yml +40 -0
  12. data/gemfiles/norails.gemfile +10 -0
  13. data/gemfiles/rails_4.2.gemfile +9 -8
  14. data/gemfiles/rails_4.2_mongoid_5.gemfile +6 -5
  15. data/gemfiles/rails_4.2_nobrainer.gemfile +9 -0
  16. data/gemfiles/rails_5.0.gemfile +6 -6
  17. data/gemfiles/rails_5.0_nobrainer.gemfile +9 -0
  18. data/gemfiles/rails_5.1.gemfile +14 -0
  19. data/gemfiles/rails_5.2.gemfile +14 -0
  20. data/lib/aasm.rb +5 -2
  21. data/lib/aasm/aasm.rb +30 -27
  22. data/lib/aasm/base.rb +25 -7
  23. data/lib/aasm/core/event.rb +14 -24
  24. data/lib/aasm/core/invoker.rb +129 -0
  25. data/lib/aasm/core/invokers/base_invoker.rb +75 -0
  26. data/lib/aasm/core/invokers/class_invoker.rb +52 -0
  27. data/lib/aasm/core/invokers/literal_invoker.rb +47 -0
  28. data/lib/aasm/core/invokers/proc_invoker.rb +59 -0
  29. data/lib/aasm/core/state.rb +10 -9
  30. data/lib/aasm/core/transition.rb +7 -68
  31. data/lib/aasm/errors.rb +4 -3
  32. data/lib/aasm/instance_base.rb +16 -4
  33. data/lib/aasm/persistence.rb +3 -0
  34. data/lib/aasm/persistence/active_record_persistence.rb +25 -5
  35. data/lib/aasm/persistence/base.rb +1 -1
  36. data/lib/aasm/persistence/core_data_query_persistence.rb +2 -1
  37. data/lib/aasm/persistence/dynamoid_persistence.rb +1 -1
  38. data/lib/aasm/persistence/mongoid_persistence.rb +1 -1
  39. data/lib/aasm/persistence/no_brainer_persistence.rb +105 -0
  40. data/lib/aasm/persistence/orm.rb +23 -19
  41. data/lib/aasm/persistence/plain_persistence.rb +2 -1
  42. data/lib/aasm/persistence/redis_persistence.rb +1 -1
  43. data/lib/aasm/persistence/sequel_persistence.rb +0 -1
  44. data/lib/aasm/rspec/allow_event.rb +5 -1
  45. data/lib/aasm/rspec/allow_transition_to.rb +5 -1
  46. data/lib/aasm/rspec/transition_from.rb +5 -1
  47. data/lib/aasm/version.rb +1 -1
  48. data/lib/generators/aasm/orm_helpers.rb +6 -0
  49. data/lib/generators/active_record/aasm_generator.rb +3 -1
  50. data/lib/generators/nobrainer/aasm_generator.rb +28 -0
  51. data/lib/motion-aasm.rb +1 -0
  52. data/spec/database.rb +16 -1
  53. data/spec/en.yml +0 -3
  54. data/spec/generators/active_record_generator_spec.rb +6 -0
  55. data/spec/generators/no_brainer_generator_spec.rb +29 -0
  56. data/spec/{en_deprecated_style.yml → localizer_test_model_deprecated_style.yml} +0 -4
  57. data/spec/localizer_test_model_new_style.yml +5 -0
  58. data/spec/models/active_record/active_record_callback.rb +93 -0
  59. data/spec/models/active_record/instance_level_skip_validation_example.rb +19 -0
  60. data/spec/models/active_record/localizer_test_model.rb +3 -3
  61. data/spec/models/active_record/person.rb +23 -0
  62. data/spec/models/active_record/simple_new_dsl.rb +15 -0
  63. data/spec/models/active_record/work.rb +3 -0
  64. data/spec/models/callbacks/with_state_arg.rb +5 -1
  65. data/spec/models/callbacks/with_state_arg_multiple.rb +4 -1
  66. data/spec/models/default_state.rb +1 -1
  67. data/spec/models/nobrainer/complex_no_brainer_example.rb +36 -0
  68. data/spec/models/nobrainer/invalid_persistor_no_brainer.rb +39 -0
  69. data/spec/models/nobrainer/no_scope_no_brainer.rb +21 -0
  70. data/spec/models/nobrainer/nobrainer_relationships.rb +25 -0
  71. data/spec/models/nobrainer/silent_persistor_no_brainer.rb +39 -0
  72. data/spec/models/nobrainer/simple_new_dsl_nobrainer.rb +25 -0
  73. data/spec/models/nobrainer/simple_no_brainer.rb +23 -0
  74. data/spec/models/nobrainer/validator_no_brainer.rb +98 -0
  75. data/spec/models/simple_example.rb +8 -0
  76. data/spec/models/simple_example_with_guard_args.rb +17 -0
  77. data/spec/spec_helper.rb +15 -0
  78. data/spec/spec_helpers/active_record.rb +2 -1
  79. data/spec/spec_helpers/dynamoid.rb +7 -5
  80. data/spec/spec_helpers/mongoid.rb +20 -1
  81. data/spec/spec_helpers/nobrainer.rb +15 -0
  82. data/spec/spec_helpers/redis.rb +5 -2
  83. data/spec/spec_helpers/sequel.rb +1 -1
  84. data/spec/unit/abstract_class_spec.rb +27 -0
  85. data/spec/unit/api_spec.rb +4 -0
  86. data/spec/unit/callback_multiple_spec.rb +7 -3
  87. data/spec/unit/callbacks_spec.rb +32 -2
  88. data/spec/unit/complex_example_spec.rb +0 -1
  89. data/spec/unit/event_spec.rb +13 -0
  90. data/spec/unit/exception_spec.rb +1 -1
  91. data/spec/unit/inspection_multiple_spec.rb +9 -5
  92. data/spec/unit/inspection_spec.rb +7 -3
  93. data/spec/unit/invoker_spec.rb +189 -0
  94. data/spec/unit/invokers/base_invoker_spec.rb +72 -0
  95. data/spec/unit/invokers/class_invoker_spec.rb +95 -0
  96. data/spec/unit/invokers/literal_invoker_spec.rb +86 -0
  97. data/spec/unit/invokers/proc_invoker_spec.rb +86 -0
  98. data/spec/unit/localizer_spec.rb +9 -10
  99. data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +4 -4
  100. data/spec/unit/persistence/active_record_persistence_spec.rb +109 -4
  101. data/spec/unit/persistence/mongoid_persistence_multiple_spec.rb +0 -4
  102. data/spec/unit/persistence/mongoid_persistence_spec.rb +0 -4
  103. data/spec/unit/persistence/no_brainer_persistence_multiple_spec.rb +198 -0
  104. data/spec/unit/persistence/no_brainer_persistence_spec.rb +158 -0
  105. data/spec/unit/rspec_matcher_spec.rb +9 -0
  106. data/spec/unit/simple_example_spec.rb +15 -0
  107. data/spec/unit/state_spec.rb +23 -7
  108. data/spec/unit/transition_spec.rb +1 -1
  109. data/test/minitest_helper.rb +2 -2
  110. data/test/unit/minitest_matcher_test.rb +1 -1
  111. metadata +106 -12
  112. data/callbacks.txt +0 -51
  113. data/gemfiles/rails_3.2.gemfile +0 -13
  114. data/gemfiles/rails_4.0.gemfile +0 -15
@@ -0,0 +1,158 @@
1
+ require 'spec_helper'
2
+
3
+ if defined?(NoBrainer::Document)
4
+ describe 'nobrainer' do
5
+ Dir[File.dirname(__FILE__) + '/../../models/nobrainer/*.rb'].sort.each do |f|
6
+ require File.expand_path(f)
7
+ end
8
+
9
+ before(:all) do
10
+ # if you want to see the statements while running the spec enable the
11
+ # following line
12
+ # NoBrainer.configure do |config|
13
+ # config.logger = Logger.new(STDERR)
14
+ # end
15
+ end
16
+
17
+ after do
18
+ NoBrainer.purge!
19
+ end
20
+
21
+ describe 'named scopes with the old DSL' do
22
+ context 'Does not already respond_to? the scope name' do
23
+ it 'should add a scope for each state' do
24
+ expect(SimpleNoBrainer).to respond_to(:unknown_scope)
25
+ expect(SimpleNoBrainer).to respond_to(:another_unknown_scope)
26
+
27
+ expect(SimpleNoBrainer.unknown_scope.class).to eq(NoBrainer::Criteria)
28
+ expect(SimpleNoBrainer.another_unknown_scope.class).to eq(NoBrainer::Criteria)
29
+ end
30
+ end
31
+
32
+ context 'Already respond_to? the scope name' do
33
+ it 'should not add a scope' do
34
+ expect(SimpleNoBrainer).to respond_to(:new)
35
+ expect(SimpleNoBrainer.new.class).to eq(SimpleNoBrainer)
36
+ end
37
+ end
38
+ end
39
+
40
+ describe 'named scopes with the new DSL' do
41
+ context 'Does not already respond_to? the scope name' do
42
+ it 'should add a scope' do
43
+ expect(SimpleNewDslNoBrainer).to respond_to(:unknown_scope)
44
+ expect(SimpleNewDslNoBrainer.unknown_scope.class).to eq(NoBrainer::Criteria)
45
+ end
46
+ end
47
+
48
+ context 'Already respond_to? the scope name' do
49
+ it 'should not add a scope' do
50
+ expect(SimpleNewDslNoBrainer).to respond_to(:new)
51
+ expect(SimpleNewDslNoBrainer.new.class).to eq(SimpleNewDslNoBrainer)
52
+ end
53
+ end
54
+
55
+ it 'does not create scopes if requested' do
56
+ expect(NoScopeNoBrainer).not_to respond_to(:ignored_scope)
57
+ end
58
+ end
59
+
60
+ describe 'instance methods' do
61
+ let(:simple) { SimpleNewDslNoBrainer.new }
62
+
63
+ it 'should initialize the aasm state on instantiation' do
64
+ expect(SimpleNewDslNoBrainer.new.status).to eql 'unknown_scope'
65
+ expect(SimpleNewDslNoBrainer.new.aasm.current_state).to eql :unknown_scope
66
+ end
67
+ end
68
+
69
+ describe 'relations object' do
70
+ it 'should load relations object ids' do
71
+ parent = Parent.create
72
+ child_1 = Child.create(parent_id: parent.id)
73
+ child_2 = Child.create(parent_id: parent.id)
74
+ expect(parent.childs.pluck(:id, :status).map(&:id)).to eql [child_1.id, child_2.id]
75
+ end
76
+ end
77
+
78
+ describe 'transitions with persistence' do
79
+ it 'should work for valid models' do
80
+ valid_object = ValidatorNoBrainer.create(name: 'name')
81
+ expect(valid_object).to be_sleeping
82
+ valid_object.status = :running
83
+ expect(valid_object).to be_running
84
+ end
85
+
86
+ it 'should not store states for invalid models' do
87
+ validator = ValidatorNoBrainer.create(name: 'name')
88
+ expect(validator).to be_valid
89
+ expect(validator).to be_sleeping
90
+
91
+ validator.name = nil
92
+ expect(validator).not_to be_valid
93
+ expect { validator.run! }.to raise_error(NoBrainer::Error::DocumentInvalid)
94
+ expect(validator).to be_sleeping
95
+
96
+ validator.reload
97
+ expect(validator).not_to be_running
98
+ expect(validator).to be_sleeping
99
+
100
+ validator.name = 'another name'
101
+ expect(validator).to be_valid
102
+ expect(validator.run!).to be_truthy
103
+ expect(validator).to be_running
104
+
105
+ validator.reload
106
+ expect(validator).to be_running
107
+ expect(validator).not_to be_sleeping
108
+ end
109
+
110
+ it 'should not store states for invalid models silently if configured' do
111
+ validator = SilentPersistorNoBrainer.create(name: 'name')
112
+ expect(validator).to be_valid
113
+ expect(validator).to be_sleeping
114
+
115
+ validator.name = nil
116
+ expect(validator).not_to be_valid
117
+ expect(validator.run!).to be_falsey
118
+ expect(validator).to be_sleeping
119
+
120
+ validator.reload
121
+ expect(validator).not_to be_running
122
+ expect(validator).to be_sleeping
123
+
124
+ validator.name = 'another name'
125
+ expect(validator).to be_valid
126
+ expect(validator.run!).to be_truthy
127
+ expect(validator).to be_running
128
+
129
+ validator.reload
130
+ expect(validator).to be_running
131
+ expect(validator).not_to be_sleeping
132
+ end
133
+
134
+ it 'should store states for invalid models if configured' do
135
+ persistor = InvalidPersistorNoBrainer.create(name: 'name')
136
+ expect(persistor).to be_valid
137
+ expect(persistor).to be_sleeping
138
+
139
+ persistor.name = nil
140
+
141
+ expect(persistor).not_to be_valid
142
+ expect(persistor.run!).to be_truthy
143
+ expect(persistor).to be_running
144
+
145
+ persistor = InvalidPersistorNoBrainer.find(persistor.id)
146
+
147
+ persistor.valid?
148
+ expect(persistor).to be_valid
149
+ expect(persistor).to be_running
150
+ expect(persistor).not_to be_sleeping
151
+
152
+ persistor.reload
153
+ expect(persistor).to be_running
154
+ expect(persistor).not_to be_sleeping
155
+ end
156
+ end
157
+ end
158
+ end
@@ -8,14 +8,17 @@ describe 'state machine' do
8
8
  it "works for simple state machines" do
9
9
  expect(simple).to transition_from(:initialised).to(:filled_out).on_event(:fill_out)
10
10
  expect(simple).to_not transition_from(:initialised).to(:authorised).on_event(:fill_out)
11
+ expect(simple).to_not transition_from(:authorised).to(:filled_out).on_event(:fill_out)
11
12
  end
12
13
 
13
14
  it "works for multiple state machines" do
14
15
  expect(multiple).to transition_from(:standing).to(:walking).on_event(:walk).on(:move)
15
16
  expect(multiple).to_not transition_from(:standing).to(:running).on_event(:walk).on(:move)
17
+ expect(multiple).to_not transition_from(:running).to(:walking).on_event(:walk).on(:move)
16
18
 
17
19
  expect(multiple).to transition_from(:sleeping).to(:processing).on_event(:start).on(:work)
18
20
  expect(multiple).to_not transition_from(:sleeping).to(:sleeping).on_event(:start).on(:work)
21
+ expect(multiple).to_not transition_from(:processing).to(:sleeping).on_event(:start).on(:work)
19
22
  end
20
23
  end
21
24
 
@@ -63,6 +66,12 @@ describe 'state machine' do
63
66
  expect(simple).to allow_event :authorise
64
67
  end
65
68
 
69
+ it "works with custom arguments" do
70
+ example = SimpleExampleWithGuardArgs.new
71
+ expect(example).to allow_event(:fill_out_with_args).with(true)
72
+ expect(example).to_not allow_event(:fill_out_with_args).with(false)
73
+ end
74
+
66
75
  it "works for multiple state machines" do
67
76
  expect(multiple).to allow_event(:walk).on(:move)
68
77
  expect(multiple).to_not allow_event(:hold).on(:move)
@@ -23,6 +23,21 @@ describe 'state machine' do
23
23
  expect(simple).to be_authorised
24
24
  end
25
25
 
26
+ it 'shows the permitted transitions' do
27
+ expect(simple.aasm.permitted_transitions).to eq(
28
+ [
29
+ { event: :fill_out, state: :filled_out },
30
+ { event: :deny, state: :denied }
31
+ ]
32
+ )
33
+
34
+ simple.fill_out!
35
+ expect(simple.aasm.permitted_transitions).to eq([{ event: :authorise, state: :authorised }])
36
+
37
+ simple.authorise
38
+ expect(simple.aasm.permitted_transitions).to eq([])
39
+ end
40
+
26
41
  it 'denies transitions to other states' do
27
42
  expect {simple.authorise}.to raise_error(AASM::InvalidTransition)
28
43
  expect {simple.authorise!}.to raise_error(AASM::InvalidTransition)
@@ -17,12 +17,28 @@ describe AASM::Core::State do
17
17
  expect(state.name).to eq(:astate)
18
18
  end
19
19
 
20
- it 'should set the display_name from name' do
21
- expect(new_state.display_name).to eq('Astate')
22
- end
20
+ describe '#display_name' do
21
+ subject(:display_name) { new_state(options).display_name }
22
+
23
+ context 'without options' do
24
+ let(:options) { {} }
25
+
26
+ context 'without I18n' do
27
+ before { allow(Module).to receive(:const_defined?).with(:I18n).and_return(nil) }
28
+
29
+ it 'should set the display_name from name' do
30
+ expect(display_name).to eq('Astate')
31
+ end
32
+ end
33
+ end
23
34
 
24
- it 'should set the display_name from options' do
25
- expect(new_state(:display => "A State").display_name).to eq('A State')
35
+ context 'with :display option' do
36
+ let(:options) { { display: "A State" } }
37
+
38
+ it 'should set the display_name from options' do
39
+ expect(display_name).to eq('A State')
40
+ end
41
+ end
26
42
  end
27
43
 
28
44
  it 'should set the options and expose them as options' do
@@ -64,7 +80,7 @@ describe AASM::Core::State do
64
80
  expect(record).to receive(:c)
65
81
  expect(record).to receive(:foobar)
66
82
 
67
- state.fire_callbacks(:entering, record)
83
+ state.fire_callbacks(:entering, record, record)
68
84
  end
69
85
 
70
86
  it "should stop calling actions if one of them raises :halt_aasm_chain" do
@@ -84,6 +100,6 @@ describe AASM::Core::State do
84
100
  record = double('record')
85
101
  expect(record).to receive(:foobar)
86
102
 
87
- state.fire_callbacks(:entering, record)
103
+ state.fire_callbacks(:entering, record, record)
88
104
  end
89
105
  end
@@ -6,7 +6,7 @@ describe 'transitions' do
6
6
  process = ProcessWithNewDsl.new
7
7
  expect { process.stop! }.to raise_error do |err|
8
8
  expect(err.class).to eql(AASM::InvalidTransition)
9
- expect(err.message).to eql("Event 'stop' cannot transition from 'sleeping'. ")
9
+ expect(err.message).to eql("Event 'stop' cannot transition from 'sleeping'.")
10
10
  expect(err.object).to eql(process)
11
11
  expect(err.event_name).to eql(:stop)
12
12
  end
@@ -34,8 +34,8 @@ begin
34
34
  })
35
35
 
36
36
  Dynamoid.configure do |config|
37
- config.namespace = "dynamoid_tests"
38
- config.endpoint = 'http://127.0.0.1:30180'
37
+ config.namespace = 'dynamoid_tests'
38
+ config.endpoint = "http://#{ENV['DYNAMODB_HOST'] || '127.0.0.1'}:30180"
39
39
  config.warn_on_scan = false
40
40
  end
41
41
 
@@ -1,7 +1,7 @@
1
1
  require 'minitest_helper'
2
2
 
3
3
  class StateMachineTest < Minitest::Spec
4
-
4
+
5
5
  let(:simple) { SimpleExample.new }
6
6
  let(:multiple) { SimpleMultipleExample.new }
7
7
 
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aasm
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.12.3
4
+ version: 5.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thorsten Boettger
8
8
  - Anil Maurya
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-10-24 00:00:00.000000000 Z
12
+ date: 2020-08-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: concurrent-ruby
@@ -95,6 +95,40 @@ dependencies:
95
95
  - - ">="
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: simplecov
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ - !ruby/object:Gem::Dependency
113
+ name: codecov
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: 0.1.17
119
+ - - "<"
120
+ - !ruby/object:Gem::Version
121
+ version: 0.1.20
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: 0.1.17
129
+ - - "<"
130
+ - !ruby/object:Gem::Version
131
+ version: 0.1.20
98
132
  - !ruby/object:Gem::Dependency
99
133
  name: pry
100
134
  requirement: !ruby/object:Gem::Requirement
@@ -117,6 +151,8 @@ extensions: []
117
151
  extra_rdoc_files: []
118
152
  files:
119
153
  - ".document"
154
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
155
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
120
156
  - ".gitignore"
121
157
  - ".travis.yml"
122
158
  - API
@@ -124,6 +160,7 @@ files:
124
160
  - CHANGELOG.md
125
161
  - CODE_OF_CONDUCT.md
126
162
  - CONTRIBUTING.md
163
+ - Dockerfile
127
164
  - Gemfile
128
165
  - Gemfile.lock_old
129
166
  - HOWTO
@@ -134,17 +171,25 @@ files:
134
171
  - Rakefile
135
172
  - TESTING.md
136
173
  - aasm.gemspec
137
- - callbacks.txt
138
- - gemfiles/rails_3.2.gemfile
139
- - gemfiles/rails_4.0.gemfile
174
+ - docker-compose.yml
175
+ - gemfiles/norails.gemfile
140
176
  - gemfiles/rails_4.2.gemfile
141
177
  - gemfiles/rails_4.2_mongoid_5.gemfile
178
+ - gemfiles/rails_4.2_nobrainer.gemfile
142
179
  - gemfiles/rails_5.0.gemfile
180
+ - gemfiles/rails_5.0_nobrainer.gemfile
181
+ - gemfiles/rails_5.1.gemfile
182
+ - gemfiles/rails_5.2.gemfile
143
183
  - lib/aasm.rb
144
184
  - lib/aasm/aasm.rb
145
185
  - lib/aasm/base.rb
146
186
  - lib/aasm/configuration.rb
147
187
  - lib/aasm/core/event.rb
188
+ - lib/aasm/core/invoker.rb
189
+ - lib/aasm/core/invokers/base_invoker.rb
190
+ - lib/aasm/core/invokers/class_invoker.rb
191
+ - lib/aasm/core/invokers/literal_invoker.rb
192
+ - lib/aasm/core/invokers/proc_invoker.rb
148
193
  - lib/aasm/core/state.rb
149
194
  - lib/aasm/core/transition.rb
150
195
  - lib/aasm/dsl_helper.rb
@@ -163,6 +208,7 @@ files:
163
208
  - lib/aasm/persistence/core_data_query_persistence.rb
164
209
  - lib/aasm/persistence/dynamoid_persistence.rb
165
210
  - lib/aasm/persistence/mongoid_persistence.rb
211
+ - lib/aasm/persistence/no_brainer_persistence.rb
166
212
  - lib/aasm/persistence/orm.rb
167
213
  - lib/aasm/persistence/plain_persistence.rb
168
214
  - lib/aasm/persistence/redis_persistence.rb
@@ -181,23 +227,29 @@ files:
181
227
  - lib/generators/active_record/templates/migration.rb
182
228
  - lib/generators/active_record/templates/migration_existing.rb
183
229
  - lib/generators/mongoid/aasm_generator.rb
230
+ - lib/generators/nobrainer/aasm_generator.rb
184
231
  - lib/motion-aasm.rb
185
232
  - spec/database.rb
186
233
  - spec/database.yml
187
234
  - spec/en.yml
188
- - spec/en_deprecated_style.yml
189
235
  - spec/generators/active_record_generator_spec.rb
190
236
  - spec/generators/mongoid_generator_spec.rb
237
+ - spec/generators/no_brainer_generator_spec.rb
238
+ - spec/localizer_test_model_deprecated_style.yml
239
+ - spec/localizer_test_model_new_style.yml
240
+ - spec/models/active_record/active_record_callback.rb
191
241
  - spec/models/active_record/basic_active_record_two_state_machines_example.rb
192
242
  - spec/models/active_record/complex_active_record_example.rb
193
243
  - spec/models/active_record/derivate_new_dsl.rb
194
244
  - spec/models/active_record/false_state.rb
195
245
  - spec/models/active_record/gate.rb
246
+ - spec/models/active_record/instance_level_skip_validation_example.rb
196
247
  - spec/models/active_record/invalid_persistor.rb
197
248
  - spec/models/active_record/localizer_test_model.rb
198
249
  - spec/models/active_record/no_direct_assignment.rb
199
250
  - spec/models/active_record/no_scope.rb
200
251
  - spec/models/active_record/persisted_state.rb
252
+ - spec/models/active_record/person.rb
201
253
  - spec/models/active_record/provided_and_persisted_state.rb
202
254
  - spec/models/active_record/reader.rb
203
255
  - spec/models/active_record/readme_job.rb
@@ -211,6 +263,7 @@ files:
211
263
  - spec/models/active_record/with_enum_without_column.rb
212
264
  - spec/models/active_record/with_false_enum.rb
213
265
  - spec/models/active_record/with_true_enum.rb
266
+ - spec/models/active_record/work.rb
214
267
  - spec/models/active_record/worker.rb
215
268
  - spec/models/active_record/writer.rb
216
269
  - spec/models/basic_two_state_machines_example.rb
@@ -254,6 +307,14 @@ files:
254
307
  - spec/models/multiple_transitions_that_differ_only_by_guard.rb
255
308
  - spec/models/namespaced_multiple_example.rb
256
309
  - spec/models/no_initial_state.rb
310
+ - spec/models/nobrainer/complex_no_brainer_example.rb
311
+ - spec/models/nobrainer/invalid_persistor_no_brainer.rb
312
+ - spec/models/nobrainer/no_scope_no_brainer.rb
313
+ - spec/models/nobrainer/nobrainer_relationships.rb
314
+ - spec/models/nobrainer/silent_persistor_no_brainer.rb
315
+ - spec/models/nobrainer/simple_new_dsl_nobrainer.rb
316
+ - spec/models/nobrainer/simple_no_brainer.rb
317
+ - spec/models/nobrainer/validator_no_brainer.rb
257
318
  - spec/models/not_auto_loaded/process.rb
258
319
  - spec/models/parametrised_event.rb
259
320
  - spec/models/parametrised_event_multiple.rb
@@ -273,6 +334,7 @@ files:
273
334
  - spec/models/silencer.rb
274
335
  - spec/models/simple_custom_example.rb
275
336
  - spec/models/simple_example.rb
337
+ - spec/models/simple_example_with_guard_args.rb
276
338
  - spec/models/simple_multiple_example.rb
277
339
  - spec/models/state_machine_with_failed_event.rb
278
340
  - spec/models/states_on_one_line_example.rb
@@ -286,9 +348,11 @@ files:
286
348
  - spec/spec_helpers/active_record.rb
287
349
  - spec/spec_helpers/dynamoid.rb
288
350
  - spec/spec_helpers/mongoid.rb
351
+ - spec/spec_helpers/nobrainer.rb
289
352
  - spec/spec_helpers/redis.rb
290
353
  - spec/spec_helpers/remove_warnings.rb
291
354
  - spec/spec_helpers/sequel.rb
355
+ - spec/unit/abstract_class_spec.rb
292
356
  - spec/unit/api_spec.rb
293
357
  - spec/unit/basic_two_state_machines_example_spec.rb
294
358
  - spec/unit/callback_multiple_spec.rb
@@ -310,6 +374,11 @@ files:
310
374
  - spec/unit/initial_state_spec.rb
311
375
  - spec/unit/inspection_multiple_spec.rb
312
376
  - spec/unit/inspection_spec.rb
377
+ - spec/unit/invoker_spec.rb
378
+ - spec/unit/invokers/base_invoker_spec.rb
379
+ - spec/unit/invokers/class_invoker_spec.rb
380
+ - spec/unit/invokers/literal_invoker_spec.rb
381
+ - spec/unit/invokers/proc_invoker_spec.rb
313
382
  - spec/unit/localizer_spec.rb
314
383
  - spec/unit/memory_leak_spec.rb
315
384
  - spec/unit/multiple_transitions_that_differ_only_by_guard_spec.rb
@@ -322,6 +391,8 @@ files:
322
391
  - spec/unit/persistence/dynamoid_persistence_spec.rb
323
392
  - spec/unit/persistence/mongoid_persistence_multiple_spec.rb
324
393
  - spec/unit/persistence/mongoid_persistence_spec.rb
394
+ - spec/unit/persistence/no_brainer_persistence_multiple_spec.rb
395
+ - spec/unit/persistence/no_brainer_persistence_spec.rb
325
396
  - spec/unit/persistence/redis_persistence_multiple_spec.rb
326
397
  - spec/unit/persistence/redis_persistence_spec.rb
327
398
  - spec/unit/persistence/sequel_persistence_multiple_spec.rb
@@ -343,7 +414,7 @@ homepage: https://github.com/aasm/aasm
343
414
  licenses:
344
415
  - MIT
345
416
  metadata: {}
346
- post_install_message:
417
+ post_install_message:
347
418
  rdoc_options: []
348
419
  require_paths:
349
420
  - lib
@@ -358,28 +429,32 @@ required_rubygems_version: !ruby/object:Gem::Requirement
358
429
  - !ruby/object:Gem::Version
359
430
  version: '0'
360
431
  requirements: []
361
- rubyforge_project:
362
- rubygems_version: 2.6.12
363
- signing_key:
432
+ rubygems_version: 3.0.3
433
+ signing_key:
364
434
  specification_version: 4
365
435
  summary: State machine mixin for Ruby objects
366
436
  test_files:
367
437
  - spec/database.rb
368
438
  - spec/database.yml
369
439
  - spec/en.yml
370
- - spec/en_deprecated_style.yml
371
440
  - spec/generators/active_record_generator_spec.rb
372
441
  - spec/generators/mongoid_generator_spec.rb
442
+ - spec/generators/no_brainer_generator_spec.rb
443
+ - spec/localizer_test_model_deprecated_style.yml
444
+ - spec/localizer_test_model_new_style.yml
445
+ - spec/models/active_record/active_record_callback.rb
373
446
  - spec/models/active_record/basic_active_record_two_state_machines_example.rb
374
447
  - spec/models/active_record/complex_active_record_example.rb
375
448
  - spec/models/active_record/derivate_new_dsl.rb
376
449
  - spec/models/active_record/false_state.rb
377
450
  - spec/models/active_record/gate.rb
451
+ - spec/models/active_record/instance_level_skip_validation_example.rb
378
452
  - spec/models/active_record/invalid_persistor.rb
379
453
  - spec/models/active_record/localizer_test_model.rb
380
454
  - spec/models/active_record/no_direct_assignment.rb
381
455
  - spec/models/active_record/no_scope.rb
382
456
  - spec/models/active_record/persisted_state.rb
457
+ - spec/models/active_record/person.rb
383
458
  - spec/models/active_record/provided_and_persisted_state.rb
384
459
  - spec/models/active_record/reader.rb
385
460
  - spec/models/active_record/readme_job.rb
@@ -393,6 +468,7 @@ test_files:
393
468
  - spec/models/active_record/with_enum_without_column.rb
394
469
  - spec/models/active_record/with_false_enum.rb
395
470
  - spec/models/active_record/with_true_enum.rb
471
+ - spec/models/active_record/work.rb
396
472
  - spec/models/active_record/worker.rb
397
473
  - spec/models/active_record/writer.rb
398
474
  - spec/models/basic_two_state_machines_example.rb
@@ -436,6 +512,14 @@ test_files:
436
512
  - spec/models/multiple_transitions_that_differ_only_by_guard.rb
437
513
  - spec/models/namespaced_multiple_example.rb
438
514
  - spec/models/no_initial_state.rb
515
+ - spec/models/nobrainer/complex_no_brainer_example.rb
516
+ - spec/models/nobrainer/invalid_persistor_no_brainer.rb
517
+ - spec/models/nobrainer/no_scope_no_brainer.rb
518
+ - spec/models/nobrainer/nobrainer_relationships.rb
519
+ - spec/models/nobrainer/silent_persistor_no_brainer.rb
520
+ - spec/models/nobrainer/simple_new_dsl_nobrainer.rb
521
+ - spec/models/nobrainer/simple_no_brainer.rb
522
+ - spec/models/nobrainer/validator_no_brainer.rb
439
523
  - spec/models/not_auto_loaded/process.rb
440
524
  - spec/models/parametrised_event.rb
441
525
  - spec/models/parametrised_event_multiple.rb
@@ -455,6 +539,7 @@ test_files:
455
539
  - spec/models/silencer.rb
456
540
  - spec/models/simple_custom_example.rb
457
541
  - spec/models/simple_example.rb
542
+ - spec/models/simple_example_with_guard_args.rb
458
543
  - spec/models/simple_multiple_example.rb
459
544
  - spec/models/state_machine_with_failed_event.rb
460
545
  - spec/models/states_on_one_line_example.rb
@@ -468,9 +553,11 @@ test_files:
468
553
  - spec/spec_helpers/active_record.rb
469
554
  - spec/spec_helpers/dynamoid.rb
470
555
  - spec/spec_helpers/mongoid.rb
556
+ - spec/spec_helpers/nobrainer.rb
471
557
  - spec/spec_helpers/redis.rb
472
558
  - spec/spec_helpers/remove_warnings.rb
473
559
  - spec/spec_helpers/sequel.rb
560
+ - spec/unit/abstract_class_spec.rb
474
561
  - spec/unit/api_spec.rb
475
562
  - spec/unit/basic_two_state_machines_example_spec.rb
476
563
  - spec/unit/callback_multiple_spec.rb
@@ -492,6 +579,11 @@ test_files:
492
579
  - spec/unit/initial_state_spec.rb
493
580
  - spec/unit/inspection_multiple_spec.rb
494
581
  - spec/unit/inspection_spec.rb
582
+ - spec/unit/invoker_spec.rb
583
+ - spec/unit/invokers/base_invoker_spec.rb
584
+ - spec/unit/invokers/class_invoker_spec.rb
585
+ - spec/unit/invokers/literal_invoker_spec.rb
586
+ - spec/unit/invokers/proc_invoker_spec.rb
495
587
  - spec/unit/localizer_spec.rb
496
588
  - spec/unit/memory_leak_spec.rb
497
589
  - spec/unit/multiple_transitions_that_differ_only_by_guard_spec.rb
@@ -504,6 +596,8 @@ test_files:
504
596
  - spec/unit/persistence/dynamoid_persistence_spec.rb
505
597
  - spec/unit/persistence/mongoid_persistence_multiple_spec.rb
506
598
  - spec/unit/persistence/mongoid_persistence_spec.rb
599
+ - spec/unit/persistence/no_brainer_persistence_multiple_spec.rb
600
+ - spec/unit/persistence/no_brainer_persistence_spec.rb
507
601
  - spec/unit/persistence/redis_persistence_multiple_spec.rb
508
602
  - spec/unit/persistence/redis_persistence_spec.rb
509
603
  - spec/unit/persistence/sequel_persistence_multiple_spec.rb