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.
Files changed (53) 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 +26 -23
  5. data/Appraisals +6 -10
  6. data/CHANGELOG.md +30 -0
  7. data/Dockerfile +1 -6
  8. data/Gemfile +1 -1
  9. data/README.md +63 -12
  10. data/aasm.gemspec +2 -0
  11. data/gemfiles/norails.gemfile +1 -1
  12. data/gemfiles/rails_4.2.gemfile +1 -0
  13. data/gemfiles/rails_4.2_mongoid_5.gemfile +1 -0
  14. data/gemfiles/rails_5.0.gemfile +1 -0
  15. data/gemfiles/rails_5.1.gemfile +1 -0
  16. data/gemfiles/rails_5.2.gemfile +1 -0
  17. data/lib/aasm.rb +0 -2
  18. data/lib/aasm/aasm.rb +29 -27
  19. data/lib/aasm/base.rb +19 -0
  20. data/lib/aasm/core/event.rb +3 -3
  21. data/lib/aasm/instance_base.rb +16 -4
  22. data/lib/aasm/persistence/active_record_persistence.rb +18 -0
  23. data/lib/aasm/persistence/orm.rb +23 -19
  24. data/lib/aasm/rspec/transition_from.rb +5 -1
  25. data/lib/aasm/version.rb +1 -1
  26. data/spec/database.rb +6 -1
  27. data/spec/en.yml +0 -3
  28. data/spec/{en_deprecated_style.yml → localizer_test_model_deprecated_style.yml} +0 -4
  29. data/spec/localizer_test_model_new_style.yml +5 -0
  30. data/spec/models/active_record/active_record_callback.rb +93 -0
  31. data/spec/models/active_record/instance_level_skip_validation_example.rb +19 -0
  32. data/spec/models/active_record/localizer_test_model.rb +3 -3
  33. data/spec/models/callbacks/with_state_arg.rb +5 -1
  34. data/spec/models/callbacks/with_state_arg_multiple.rb +4 -1
  35. data/spec/models/default_state.rb +1 -1
  36. data/spec/models/simple_example.rb +6 -0
  37. data/spec/spec_helper.rb +15 -0
  38. data/spec/unit/api_spec.rb +4 -0
  39. data/spec/unit/callback_multiple_spec.rb +4 -0
  40. data/spec/unit/callbacks_spec.rb +4 -0
  41. data/spec/unit/complex_example_spec.rb +0 -1
  42. data/spec/unit/event_spec.rb +13 -0
  43. data/spec/unit/inspection_multiple_spec.rb +9 -5
  44. data/spec/unit/inspection_spec.rb +7 -3
  45. data/spec/unit/localizer_spec.rb +9 -10
  46. data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +4 -4
  47. data/spec/unit/persistence/active_record_persistence_spec.rb +93 -4
  48. data/spec/unit/rspec_matcher_spec.rb +3 -0
  49. data/spec/unit/simple_example_spec.rb +15 -0
  50. data/spec/unit/state_spec.rb +21 -5
  51. metadata +50 -11
  52. data/callbacks.txt +0 -51
  53. 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)
@@ -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
34
+
35
+ context 'with :display option' do
36
+ let(:options) { { display: "A State" } }
23
37
 
24
- it 'should set the display_name from options' do
25
- expect(new_state(:display => "A State").display_name).to eq('A State')
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.0.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: 2019-05-17 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
@@ -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
- rubyforge_project:
396
- rubygems_version: 2.6.14
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
@@ -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
@@ -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: "../"