aasm 5.0.5 → 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.
- checksums.yaml +5 -5
- data/.github/ISSUE_TEMPLATE/bug_report.md +27 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.travis.yml +26 -23
- data/Appraisals +6 -10
- data/CHANGELOG.md +30 -0
- data/Dockerfile +1 -6
- data/Gemfile +1 -1
- data/README.md +63 -12
- data/aasm.gemspec +2 -0
- data/gemfiles/norails.gemfile +1 -1
- data/gemfiles/rails_4.2.gemfile +1 -0
- data/gemfiles/rails_4.2_mongoid_5.gemfile +1 -0
- data/gemfiles/rails_5.0.gemfile +1 -0
- data/gemfiles/rails_5.1.gemfile +1 -0
- data/gemfiles/rails_5.2.gemfile +1 -0
- data/lib/aasm.rb +0 -2
- data/lib/aasm/aasm.rb +29 -27
- data/lib/aasm/base.rb +19 -0
- data/lib/aasm/core/event.rb +3 -3
- data/lib/aasm/instance_base.rb +16 -4
- data/lib/aasm/persistence/active_record_persistence.rb +18 -0
- data/lib/aasm/persistence/orm.rb +23 -19
- data/lib/aasm/rspec/transition_from.rb +5 -1
- data/lib/aasm/version.rb +1 -1
- data/spec/database.rb +6 -1
- data/spec/en.yml +0 -3
- data/spec/{en_deprecated_style.yml → localizer_test_model_deprecated_style.yml} +0 -4
- data/spec/localizer_test_model_new_style.yml +5 -0
- data/spec/models/active_record/active_record_callback.rb +93 -0
- data/spec/models/active_record/instance_level_skip_validation_example.rb +19 -0
- data/spec/models/active_record/localizer_test_model.rb +3 -3
- data/spec/models/callbacks/with_state_arg.rb +5 -1
- data/spec/models/callbacks/with_state_arg_multiple.rb +4 -1
- data/spec/models/default_state.rb +1 -1
- data/spec/models/simple_example.rb +6 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/unit/api_spec.rb +4 -0
- data/spec/unit/callback_multiple_spec.rb +4 -0
- data/spec/unit/callbacks_spec.rb +4 -0
- data/spec/unit/complex_example_spec.rb +0 -1
- data/spec/unit/event_spec.rb +13 -0
- data/spec/unit/inspection_multiple_spec.rb +9 -5
- data/spec/unit/inspection_spec.rb +7 -3
- data/spec/unit/localizer_spec.rb +9 -10
- data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +4 -4
- data/spec/unit/persistence/active_record_persistence_spec.rb +93 -4
- data/spec/unit/rspec_matcher_spec.rb +3 -0
- data/spec/unit/simple_example_spec.rb +15 -0
- data/spec/unit/state_spec.rb +21 -5
- metadata +50 -11
- data/callbacks.txt +0 -51
- data/gemfiles/rails_3.2.gemfile +0 -14
@@ -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)
|
data/spec/unit/state_spec.rb
CHANGED
@@ -17,12 +17,28 @@ describe AASM::Core::State do
|
|
17
17
|
expect(state.name).to eq(:astate)
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
|
22
|
-
|
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
|
34
|
+
|
35
|
+
context 'with :display option' do
|
36
|
+
let(:options) { { display: "A State" } }
|
23
37
|
|
24
|
-
|
25
|
-
|
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
|
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: 5.
|
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:
|
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
|
@@ -135,10 +171,8 @@ files:
|
|
135
171
|
- Rakefile
|
136
172
|
- TESTING.md
|
137
173
|
- aasm.gemspec
|
138
|
-
- callbacks.txt
|
139
174
|
- docker-compose.yml
|
140
175
|
- gemfiles/norails.gemfile
|
141
|
-
- gemfiles/rails_3.2.gemfile
|
142
176
|
- gemfiles/rails_4.2.gemfile
|
143
177
|
- gemfiles/rails_4.2_mongoid_5.gemfile
|
144
178
|
- gemfiles/rails_4.2_nobrainer.gemfile
|
@@ -198,15 +232,18 @@ files:
|
|
198
232
|
- spec/database.rb
|
199
233
|
- spec/database.yml
|
200
234
|
- spec/en.yml
|
201
|
-
- spec/en_deprecated_style.yml
|
202
235
|
- spec/generators/active_record_generator_spec.rb
|
203
236
|
- spec/generators/mongoid_generator_spec.rb
|
204
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
|
205
241
|
- spec/models/active_record/basic_active_record_two_state_machines_example.rb
|
206
242
|
- spec/models/active_record/complex_active_record_example.rb
|
207
243
|
- spec/models/active_record/derivate_new_dsl.rb
|
208
244
|
- spec/models/active_record/false_state.rb
|
209
245
|
- spec/models/active_record/gate.rb
|
246
|
+
- spec/models/active_record/instance_level_skip_validation_example.rb
|
210
247
|
- spec/models/active_record/invalid_persistor.rb
|
211
248
|
- spec/models/active_record/localizer_test_model.rb
|
212
249
|
- spec/models/active_record/no_direct_assignment.rb
|
@@ -377,7 +414,7 @@ homepage: https://github.com/aasm/aasm
|
|
377
414
|
licenses:
|
378
415
|
- MIT
|
379
416
|
metadata: {}
|
380
|
-
post_install_message:
|
417
|
+
post_install_message:
|
381
418
|
rdoc_options: []
|
382
419
|
require_paths:
|
383
420
|
- lib
|
@@ -392,24 +429,26 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
392
429
|
- !ruby/object:Gem::Version
|
393
430
|
version: '0'
|
394
431
|
requirements: []
|
395
|
-
|
396
|
-
|
397
|
-
signing_key:
|
432
|
+
rubygems_version: 3.0.3
|
433
|
+
signing_key:
|
398
434
|
specification_version: 4
|
399
435
|
summary: State machine mixin for Ruby objects
|
400
436
|
test_files:
|
401
437
|
- spec/database.rb
|
402
438
|
- spec/database.yml
|
403
439
|
- spec/en.yml
|
404
|
-
- spec/en_deprecated_style.yml
|
405
440
|
- spec/generators/active_record_generator_spec.rb
|
406
441
|
- spec/generators/mongoid_generator_spec.rb
|
407
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
|
408
446
|
- spec/models/active_record/basic_active_record_two_state_machines_example.rb
|
409
447
|
- spec/models/active_record/complex_active_record_example.rb
|
410
448
|
- spec/models/active_record/derivate_new_dsl.rb
|
411
449
|
- spec/models/active_record/false_state.rb
|
412
450
|
- spec/models/active_record/gate.rb
|
451
|
+
- spec/models/active_record/instance_level_skip_validation_example.rb
|
413
452
|
- spec/models/active_record/invalid_persistor.rb
|
414
453
|
- spec/models/active_record/localizer_test_model.rb
|
415
454
|
- spec/models/active_record/no_direct_assignment.rb
|
data/callbacks.txt
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
callbacks
|
2
|
-
|
3
|
-
AASM 3
|
4
|
-
|
5
|
-
begin
|
6
|
-
old_state exit # old? should be deprecated -> use old_state.before_exit instead
|
7
|
-
event before
|
8
|
-
old_state before_exit
|
9
|
-
new_state before_enter
|
10
|
-
new_state enter # old? should be deprecated -> use new_state.before_enter instead
|
11
|
-
...update state...
|
12
|
-
transition guard
|
13
|
-
event guard
|
14
|
-
transition on_transition
|
15
|
-
event success # if persist successful
|
16
|
-
old_state after_exit
|
17
|
-
new_state after_enter
|
18
|
-
event after
|
19
|
-
rescue
|
20
|
-
event error
|
21
|
-
end
|
22
|
-
|
23
|
-
AASM 4
|
24
|
-
|
25
|
-
todo
|
26
|
-
|
27
|
-
done
|
28
|
-
- move event.before before everything else
|
29
|
-
- move old_state.before_exit before old_state.exit
|
30
|
-
- move event.guard before transition.guard
|
31
|
-
- fire guards before running state callbacks (test run)
|
32
|
-
|
33
|
-
begin
|
34
|
-
event before
|
35
|
-
event guard # test run
|
36
|
-
transition guard # test run
|
37
|
-
old_state before_exit
|
38
|
-
old_state exit
|
39
|
-
new_state before_enter
|
40
|
-
new_state enter
|
41
|
-
event guard
|
42
|
-
transition guard
|
43
|
-
transition on_transition
|
44
|
-
...update state...
|
45
|
-
event success # if persist successful
|
46
|
-
old_state after_exit
|
47
|
-
new_state after_enter
|
48
|
-
event after
|
49
|
-
rescue
|
50
|
-
event error
|
51
|
-
end
|
data/gemfiles/rails_3.2.gemfile
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
# This file was generated by Appraisal
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
gem "sqlite3", "~> 1.3.5", platforms: :ruby
|
6
|
-
gem "rails", "~> 3.2.22"
|
7
|
-
gem "mongoid", "~> 3.1"
|
8
|
-
gem "sequel"
|
9
|
-
gem "bson_ext", platforms: :ruby
|
10
|
-
gem "test-unit", "~> 3.0"
|
11
|
-
gem "minitest"
|
12
|
-
gem "activerecord-jdbcsqlite3-adapter", "1.3.24", platforms: :jruby
|
13
|
-
|
14
|
-
gemspec path: "../"
|