aasm 4.9.0 → 4.10.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.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +9 -4
  3. data/CHANGELOG.md +15 -0
  4. data/Gemfile +3 -0
  5. data/README.md +27 -11
  6. data/gemfiles/rails_4.0.gemfile +1 -0
  7. data/gemfiles/rails_4.1.gemfile +1 -0
  8. data/gemfiles/rails_4.2_mongo_mapper.gemfile +1 -0
  9. data/lib/aasm.rb +3 -1
  10. data/lib/aasm/aasm.rb +13 -9
  11. data/lib/aasm/base.rb +67 -28
  12. data/lib/aasm/configuration.rb +3 -0
  13. data/lib/aasm/core/event.rb +8 -1
  14. data/lib/aasm/core/transition.rb +32 -4
  15. data/lib/aasm/errors.rb +4 -4
  16. data/lib/aasm/persistence.rb +14 -1
  17. data/lib/aasm/persistence/active_record_persistence.rb +27 -13
  18. data/lib/aasm/persistence/base.rb +2 -44
  19. data/lib/aasm/persistence/core_data_query_persistence.rb +93 -0
  20. data/lib/aasm/persistence/dynamoid_persistence.rb +2 -4
  21. data/lib/aasm/persistence/mongo_mapper_persistence.rb +15 -9
  22. data/lib/aasm/persistence/mongoid_persistence.rb +24 -4
  23. data/lib/aasm/persistence/redis_persistence.rb +107 -0
  24. data/lib/aasm/persistence/sequel_persistence.rb +1 -3
  25. data/lib/aasm/state_machine.rb +1 -9
  26. data/lib/aasm/state_machine_store.rb +73 -0
  27. data/lib/aasm/version.rb +1 -1
  28. data/lib/generators/active_record/templates/migration_existing.rb +2 -6
  29. data/lib/motion-aasm.rb +35 -0
  30. data/spec/models/callbacks/basic.rb +12 -2
  31. data/spec/models/callbacks/guard_within_block.rb +2 -1
  32. data/spec/models/callbacks/multiple_transitions_transition_guard.rb +2 -1
  33. data/spec/models/callbacks/with_args.rb +2 -1
  34. data/spec/models/callbacks/with_state_arg.rb +6 -2
  35. data/spec/models/mongoid/mongoid_relationships.rb +26 -0
  36. data/spec/models/namespaced_multiple_example.rb +28 -0
  37. data/spec/models/parametrised_event.rb +9 -3
  38. data/spec/models/states_on_one_line_example.rb +8 -0
  39. data/spec/spec_helper.rb +1 -0
  40. data/spec/unit/api_spec.rb +20 -0
  41. data/spec/unit/callbacks_spec.rb +17 -5
  42. data/spec/unit/event_spec.rb +19 -1
  43. data/spec/unit/exception_spec.rb +11 -0
  44. data/spec/unit/memory_leak_spec.rb +1 -1
  45. data/spec/unit/namespaced_multiple_example_spec.rb +53 -0
  46. data/spec/unit/override_warning_spec.rb +43 -0
  47. data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +1 -1
  48. data/spec/unit/persistence/active_record_persistence_spec.rb +1 -1
  49. data/spec/unit/persistence/mongoid_persistence_spec.rb +11 -0
  50. data/spec/unit/persistence/redis_persistence_spec.rb +77 -0
  51. data/spec/unit/readme_spec.rb +1 -2
  52. data/spec/unit/states_on_one_line_example_spec.rb +16 -0
  53. data/spec/unit/transition_spec.rb +60 -1
  54. metadata +22 -2
@@ -8,8 +8,7 @@ describe 'testing the README examples' do
8
8
 
9
9
  aasm do
10
10
  state :sleeping, :initial => true
11
- state :running
12
- state :cleaning
11
+ state :running, :cleaning
13
12
 
14
13
  event :run do
15
14
  transitions :from => :sleeping, :to => :running
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ describe StatesOnOneLineExample do
4
+ let(:example) { StatesOnOneLineExample.new }
5
+ describe 'on initialize' do
6
+ it 'should be in the initial state' do
7
+ expect(example.aasm(:one_line).current_state).to eql :initial
8
+ end
9
+ end
10
+
11
+ describe 'states' do
12
+ it 'should have all 3 states defined' do
13
+ expect(example.aasm(:one_line).states.map(&:name)).to eq [:initial, :first, :second]
14
+ end
15
+ end
16
+ end
@@ -79,15 +79,17 @@ describe AASM::Core::Transition do
79
79
  expect(st.opts[:after]).to eql [:after_callback]
80
80
  end
81
81
 
82
- it 'should set after and guard from dsl' do
82
+ it 'should set after, guard and success from dsl' do
83
83
  opts = {:from => 'foo', :to => 'bar', :guard => 'g'}
84
84
  st = AASM::Core::Transition.new(event, opts) do
85
85
  guard :gg
86
86
  after :after_callback
87
+ success :after_persist
87
88
  end
88
89
 
89
90
  expect(st.opts[:guard]).to eql ['g', :gg]
90
91
  expect(st.opts[:after]).to eql [:after_callback] # TODO fix this bad code coupling
92
+ expect(st.opts[:success]).to eql [:after_persist] # TODO fix this bad code coupling
91
93
  end
92
94
 
93
95
  it 'should pass equality check if from and to are the same' do
@@ -363,3 +365,60 @@ describe AASM::Core::Transition, '- when executing the transition with a Class'
363
365
  expect(return_value).to eq('success')
364
366
  end
365
367
  end
368
+
369
+ describe AASM::Core::Transition, '- when invoking the transition :success method call' do
370
+ let(:state_machine) { AASM::StateMachine.new(:name) }
371
+ let(:event) { AASM::Core::Event.new(:event, state_machine) }
372
+
373
+ it 'should accept a String for the method name' do
374
+ opts = {:from => 'foo', :to => 'bar', :success => 'test'}
375
+ st = AASM::Core::Transition.new(event, opts)
376
+ args = {:arg1 => '1', :arg2 => '2'}
377
+ obj = double('object', :aasm => 'aasm')
378
+
379
+ expect(obj).to receive(:test)
380
+
381
+ st.invoke_success_callbacks(obj, args)
382
+ end
383
+
384
+ it 'should accept a Symbol for the method name' do
385
+ opts = {:from => 'foo', :to => 'bar', :success => :test}
386
+ st = AASM::Core::Transition.new(event, opts)
387
+ args = {:arg1 => '1', :arg2 => '2'}
388
+ obj = double('object', :aasm => 'aasm')
389
+
390
+ expect(obj).to receive(:test)
391
+
392
+ st.invoke_success_callbacks(obj, args)
393
+ end
394
+
395
+ it 'should pass args if the target method accepts them' do
396
+ opts = {:from => 'foo', :to => 'bar', :success => :test}
397
+ st = AASM::Core::Transition.new(event, opts)
398
+ args = {:arg1 => '1', :arg2 => '2'}
399
+ obj = double('object', :aasm => 'aasm')
400
+
401
+ def obj.test(args)
402
+ "arg1: #{args[:arg1]} arg2: #{args[:arg2]}"
403
+ end
404
+
405
+ return_value = st.invoke_success_callbacks(obj, args)
406
+
407
+ expect(return_value).to eq('arg1: 1 arg2: 2')
408
+ end
409
+
410
+ it 'should NOT pass args if the target method does NOT accept them' do
411
+ opts = {:from => 'foo', :to => 'bar', :success => :test}
412
+ st = AASM::Core::Transition.new(event, opts)
413
+ args = {:arg1 => '1', :arg2 => '2'}
414
+ obj = double('object', :aasm => 'aasm')
415
+
416
+ def obj.test
417
+ 'success'
418
+ end
419
+
420
+ return_value = st.invoke_success_callbacks(obj, args)
421
+
422
+ expect(return_value).to eq('success')
423
+ end
424
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aasm
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.9.0
4
+ version: 4.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Barron
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-02-22 00:00:00.000000000 Z
13
+ date: 2016-03-31 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rake
@@ -126,10 +126,12 @@ files:
126
126
  - lib/aasm/persistence.rb
127
127
  - lib/aasm/persistence/active_record_persistence.rb
128
128
  - lib/aasm/persistence/base.rb
129
+ - lib/aasm/persistence/core_data_query_persistence.rb
129
130
  - lib/aasm/persistence/dynamoid_persistence.rb
130
131
  - lib/aasm/persistence/mongo_mapper_persistence.rb
131
132
  - lib/aasm/persistence/mongoid_persistence.rb
132
133
  - lib/aasm/persistence/plain_persistence.rb
134
+ - lib/aasm/persistence/redis_persistence.rb
133
135
  - lib/aasm/persistence/sequel_persistence.rb
134
136
  - lib/aasm/rspec.rb
135
137
  - lib/aasm/rspec/allow_event.rb
@@ -137,6 +139,7 @@ files:
137
139
  - lib/aasm/rspec/have_state.rb
138
140
  - lib/aasm/rspec/transition_from.rb
139
141
  - lib/aasm/state_machine.rb
142
+ - lib/aasm/state_machine_store.rb
140
143
  - lib/aasm/version.rb
141
144
  - lib/generators/aasm/aasm_generator.rb
142
145
  - lib/generators/aasm/orm_helpers.rb
@@ -144,6 +147,7 @@ files:
144
147
  - lib/generators/active_record/templates/migration.rb
145
148
  - lib/generators/active_record/templates/migration_existing.rb
146
149
  - lib/generators/mongoid/aasm_generator.rb
150
+ - lib/motion-aasm.rb
147
151
  - spec/database.rb
148
152
  - spec/database.yml
149
153
  - spec/en.yml
@@ -201,10 +205,12 @@ files:
201
205
  - spec/models/mongo_mapper/simple_mongo_mapper.rb
202
206
  - spec/models/mongo_mapper/simple_new_dsl_mongo_mapper.rb
203
207
  - spec/models/mongoid/complex_mongoid_example.rb
208
+ - spec/models/mongoid/mongoid_relationships.rb
204
209
  - spec/models/mongoid/no_scope_mongoid.rb
205
210
  - spec/models/mongoid/simple_mongoid.rb
206
211
  - spec/models/mongoid/simple_new_dsl_mongoid.rb
207
212
  - spec/models/multi_transitioner.rb
213
+ - spec/models/namespaced_multiple_example.rb
208
214
  - spec/models/no_initial_state.rb
209
215
  - spec/models/not_auto_loaded/process.rb
210
216
  - spec/models/parametrised_event.rb
@@ -219,6 +225,7 @@ files:
219
225
  - spec/models/simple_example.rb
220
226
  - spec/models/simple_multiple_example.rb
221
227
  - spec/models/state_machine_with_failed_event.rb
228
+ - spec/models/states_on_one_line_example.rb
222
229
  - spec/models/sub_class.rb
223
230
  - spec/models/sub_class_with_more_states.rb
224
231
  - spec/models/sub_classing.rb
@@ -239,6 +246,7 @@ files:
239
246
  - spec/unit/event_multiple_spec.rb
240
247
  - spec/unit/event_naming_spec.rb
241
248
  - spec/unit/event_spec.rb
249
+ - spec/unit/exception_spec.rb
242
250
  - spec/unit/guard_multiple_spec.rb
243
251
  - spec/unit/guard_spec.rb
244
252
  - spec/unit/initial_state_multiple_spec.rb
@@ -247,7 +255,9 @@ files:
247
255
  - spec/unit/inspection_spec.rb
248
256
  - spec/unit/localizer_spec.rb
249
257
  - spec/unit/memory_leak_spec.rb
258
+ - spec/unit/namespaced_multiple_example_spec.rb
250
259
  - spec/unit/new_dsl_spec.rb
260
+ - spec/unit/override_warning_spec.rb
251
261
  - spec/unit/persistence/active_record_persistence_multiple_spec.rb
252
262
  - spec/unit/persistence/active_record_persistence_spec.rb
253
263
  - spec/unit/persistence/dynamoid_persistence_multiple_spec.rb
@@ -256,6 +266,7 @@ files:
256
266
  - spec/unit/persistence/mongo_mapper_persistence_spec.rb
257
267
  - spec/unit/persistence/mongoid_persistence_multiple_spec.rb
258
268
  - spec/unit/persistence/mongoid_persistence_spec.rb
269
+ - spec/unit/persistence/redis_persistence_spec.rb
259
270
  - spec/unit/persistence/sequel_persistence_multiple_spec.rb
260
271
  - spec/unit/persistence/sequel_persistence_spec.rb
261
272
  - spec/unit/readme_spec.rb
@@ -265,6 +276,7 @@ files:
265
276
  - spec/unit/simple_example_spec.rb
266
277
  - spec/unit/simple_multiple_example_spec.rb
267
278
  - spec/unit/state_spec.rb
279
+ - spec/unit/states_on_one_line_example_spec.rb
268
280
  - spec/unit/subclassing_multiple_spec.rb
269
281
  - spec/unit/subclassing_spec.rb
270
282
  - spec/unit/transition_spec.rb
@@ -350,10 +362,12 @@ test_files:
350
362
  - spec/models/mongo_mapper/simple_mongo_mapper.rb
351
363
  - spec/models/mongo_mapper/simple_new_dsl_mongo_mapper.rb
352
364
  - spec/models/mongoid/complex_mongoid_example.rb
365
+ - spec/models/mongoid/mongoid_relationships.rb
353
366
  - spec/models/mongoid/no_scope_mongoid.rb
354
367
  - spec/models/mongoid/simple_mongoid.rb
355
368
  - spec/models/mongoid/simple_new_dsl_mongoid.rb
356
369
  - spec/models/multi_transitioner.rb
370
+ - spec/models/namespaced_multiple_example.rb
357
371
  - spec/models/no_initial_state.rb
358
372
  - spec/models/not_auto_loaded/process.rb
359
373
  - spec/models/parametrised_event.rb
@@ -368,6 +382,7 @@ test_files:
368
382
  - spec/models/simple_example.rb
369
383
  - spec/models/simple_multiple_example.rb
370
384
  - spec/models/state_machine_with_failed_event.rb
385
+ - spec/models/states_on_one_line_example.rb
371
386
  - spec/models/sub_class.rb
372
387
  - spec/models/sub_class_with_more_states.rb
373
388
  - spec/models/sub_classing.rb
@@ -388,6 +403,7 @@ test_files:
388
403
  - spec/unit/event_multiple_spec.rb
389
404
  - spec/unit/event_naming_spec.rb
390
405
  - spec/unit/event_spec.rb
406
+ - spec/unit/exception_spec.rb
391
407
  - spec/unit/guard_multiple_spec.rb
392
408
  - spec/unit/guard_spec.rb
393
409
  - spec/unit/initial_state_multiple_spec.rb
@@ -396,7 +412,9 @@ test_files:
396
412
  - spec/unit/inspection_spec.rb
397
413
  - spec/unit/localizer_spec.rb
398
414
  - spec/unit/memory_leak_spec.rb
415
+ - spec/unit/namespaced_multiple_example_spec.rb
399
416
  - spec/unit/new_dsl_spec.rb
417
+ - spec/unit/override_warning_spec.rb
400
418
  - spec/unit/persistence/active_record_persistence_multiple_spec.rb
401
419
  - spec/unit/persistence/active_record_persistence_spec.rb
402
420
  - spec/unit/persistence/dynamoid_persistence_multiple_spec.rb
@@ -405,6 +423,7 @@ test_files:
405
423
  - spec/unit/persistence/mongo_mapper_persistence_spec.rb
406
424
  - spec/unit/persistence/mongoid_persistence_multiple_spec.rb
407
425
  - spec/unit/persistence/mongoid_persistence_spec.rb
426
+ - spec/unit/persistence/redis_persistence_spec.rb
408
427
  - spec/unit/persistence/sequel_persistence_multiple_spec.rb
409
428
  - spec/unit/persistence/sequel_persistence_spec.rb
410
429
  - spec/unit/readme_spec.rb
@@ -414,6 +433,7 @@ test_files:
414
433
  - spec/unit/simple_example_spec.rb
415
434
  - spec/unit/simple_multiple_example_spec.rb
416
435
  - spec/unit/state_spec.rb
436
+ - spec/unit/states_on_one_line_example_spec.rb
417
437
  - spec/unit/subclassing_multiple_spec.rb
418
438
  - spec/unit/subclassing_spec.rb
419
439
  - spec/unit/transition_spec.rb