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.
- checksums.yaml +4 -4
- data/.travis.yml +9 -4
- data/CHANGELOG.md +15 -0
- data/Gemfile +3 -0
- data/README.md +27 -11
- data/gemfiles/rails_4.0.gemfile +1 -0
- data/gemfiles/rails_4.1.gemfile +1 -0
- data/gemfiles/rails_4.2_mongo_mapper.gemfile +1 -0
- data/lib/aasm.rb +3 -1
- data/lib/aasm/aasm.rb +13 -9
- data/lib/aasm/base.rb +67 -28
- data/lib/aasm/configuration.rb +3 -0
- data/lib/aasm/core/event.rb +8 -1
- data/lib/aasm/core/transition.rb +32 -4
- data/lib/aasm/errors.rb +4 -4
- data/lib/aasm/persistence.rb +14 -1
- data/lib/aasm/persistence/active_record_persistence.rb +27 -13
- data/lib/aasm/persistence/base.rb +2 -44
- data/lib/aasm/persistence/core_data_query_persistence.rb +93 -0
- data/lib/aasm/persistence/dynamoid_persistence.rb +2 -4
- data/lib/aasm/persistence/mongo_mapper_persistence.rb +15 -9
- data/lib/aasm/persistence/mongoid_persistence.rb +24 -4
- data/lib/aasm/persistence/redis_persistence.rb +107 -0
- data/lib/aasm/persistence/sequel_persistence.rb +1 -3
- data/lib/aasm/state_machine.rb +1 -9
- data/lib/aasm/state_machine_store.rb +73 -0
- data/lib/aasm/version.rb +1 -1
- data/lib/generators/active_record/templates/migration_existing.rb +2 -6
- data/lib/motion-aasm.rb +35 -0
- data/spec/models/callbacks/basic.rb +12 -2
- data/spec/models/callbacks/guard_within_block.rb +2 -1
- data/spec/models/callbacks/multiple_transitions_transition_guard.rb +2 -1
- data/spec/models/callbacks/with_args.rb +2 -1
- data/spec/models/callbacks/with_state_arg.rb +6 -2
- data/spec/models/mongoid/mongoid_relationships.rb +26 -0
- data/spec/models/namespaced_multiple_example.rb +28 -0
- data/spec/models/parametrised_event.rb +9 -3
- data/spec/models/states_on_one_line_example.rb +8 -0
- data/spec/spec_helper.rb +1 -0
- data/spec/unit/api_spec.rb +20 -0
- data/spec/unit/callbacks_spec.rb +17 -5
- data/spec/unit/event_spec.rb +19 -1
- data/spec/unit/exception_spec.rb +11 -0
- data/spec/unit/memory_leak_spec.rb +1 -1
- data/spec/unit/namespaced_multiple_example_spec.rb +53 -0
- data/spec/unit/override_warning_spec.rb +43 -0
- data/spec/unit/persistence/active_record_persistence_multiple_spec.rb +1 -1
- data/spec/unit/persistence/active_record_persistence_spec.rb +1 -1
- data/spec/unit/persistence/mongoid_persistence_spec.rb +11 -0
- data/spec/unit/persistence/redis_persistence_spec.rb +77 -0
- data/spec/unit/readme_spec.rb +1 -2
- data/spec/unit/states_on_one_line_example_spec.rb +16 -0
- data/spec/unit/transition_spec.rb +60 -1
- metadata +22 -2
data/spec/unit/readme_spec.rb
CHANGED
@@ -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
|
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.
|
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-
|
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
|