aasm 4.9.0 → 4.10.0

Sign up to get free protection for your applications and to get access to all the features.
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