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