class TransitionCollectionWithDifferentActionsTest
Public Instance Methods
save_state()
click to toggle source
# File test/unit/transition_collection_test.rb, line 510 def save_state (@actions ||= []) << :save_state :save_state end
save_status()
click to toggle source
# File test/unit/transition_collection_test.rb, line 515 def save_status (@actions ||= []) << :save_status :save_status end
setup()
click to toggle source
# File test/unit/transition_collection_test.rb, line 506 def setup @klass = Class.new do attr_reader :actions def save_state (@actions ||= []) << :save_state :save_state end def save_status (@actions ||= []) << :save_status :save_status end end @state = StateMachine::Machine.new(@klass, :initial => :parked, :action => :save_state) @state.state :idling @state.event :ignite @status = StateMachine::Machine.new(@klass, :status, :initial => :first_gear, :action => :save_status) @status.state :second_gear @status.event :shift_up @object = @klass.new @transitions = StateMachine::TransitionCollection.new([ @state_transition = StateMachine::Transition.new(@object, @state, :ignite, :parked, :idling), @status_transition = StateMachine::Transition.new(@object, @status, :shift_up, :first_gear, :second_gear) ]) end
test_should_halt_if_action_fails_for_second_transition()
click to toggle source
# File test/unit/transition_collection_test.rb, line 571 def test_should_halt_if_action_fails_for_second_transition @klass.class_eval do def save_status (@actions ||= []) << :save_status false end end assert_equal false, @transitions.perform assert_equal [:save_state, :save_status], @object.actions end
test_should_not_halt_if_action_fails_for_first_transition()
click to toggle source
# File test/unit/transition_collection_test.rb, line 558 def test_should_not_halt_if_action_fails_for_first_transition @klass.class_eval do def save_state (@actions ||= []) << :save_state false end end assert_equal false, @transitions.perform assert_equal [:save_state, :save_status], @object.actions end
test_should_not_run_after_callbacks_if_action_fails_for_first_transition()
click to toggle source
# File test/unit/transition_collection_test.rb, line 607 def test_should_not_run_after_callbacks_if_action_fails_for_first_transition @klass.class_eval do def save_state false end end @callbacks = [] @state.after_transition { @callbacks << :state_after } @state.around_transition {|block| block.call; @callbacks << :state_around } @status.after_transition { @callbacks << :status_after } @status.around_transition {|block| block.call; @callbacks << :status_around } @transitions.perform assert_equal [], @callbacks end
test_should_not_run_after_callbacks_if_action_fails_for_second_transition()
click to toggle source
# File test/unit/transition_collection_test.rb, line 624 def test_should_not_run_after_callbacks_if_action_fails_for_second_transition @klass.class_eval do def save_status false end end @callbacks = [] @state.after_transition { @callbacks << :state_after } @state.around_transition {|block| block.call; @callbacks << :state_around } @status.after_transition { @callbacks << :status_after } @status.around_transition {|block| block.call; @callbacks << :status_around } @transitions.perform assert_equal [], @callbacks end
test_should_persist_states()
click to toggle source
# File test/unit/transition_collection_test.rb, line 541 def test_should_persist_states @transitions.perform assert_equal 'idling', @object.state assert_equal 'second_gear', @object.status end
test_should_rollback_if_action_errors_for_first_transition()
click to toggle source
# File test/unit/transition_collection_test.rb, line 583 def test_should_rollback_if_action_errors_for_first_transition @klass.class_eval do def save_state raise ArgumentError end end begin; @transitions.perform; rescue; end assert_equal 'parked', @object.state assert_equal 'first_gear', @object.status end
test_should_rollback_if_action_errors_for_second_transition()
click to toggle source
# File test/unit/transition_collection_test.rb, line 595 def test_should_rollback_if_action_errors_for_second_transition @klass.class_eval do def save_status raise ArgumentError end end begin; @transitions.perform; rescue; end assert_equal 'parked', @object.state assert_equal 'first_gear', @object.status end
test_should_run_actions_in_order()
click to toggle source
# File test/unit/transition_collection_test.rb, line 547 def test_should_run_actions_in_order @transitions.perform assert_equal [:save_state, :save_status], @object.actions end
test_should_run_after_failure_callbacks_if_action_fails_for_first_transition()
click to toggle source
# File test/unit/transition_collection_test.rb, line 641 def test_should_run_after_failure_callbacks_if_action_fails_for_first_transition @klass.class_eval do def save_state false end end @callbacks = [] @state.after_failure { @callbacks << :state_after } @status.after_failure { @callbacks << :status_after } @transitions.perform assert_equal [:status_after, :state_after], @callbacks end
test_should_run_after_failure_callbacks_if_action_fails_for_second_transition()
click to toggle source
# File test/unit/transition_collection_test.rb, line 656 def test_should_run_after_failure_callbacks_if_action_fails_for_second_transition @klass.class_eval do def save_status false end end @callbacks = [] @state.after_failure { @callbacks << :state_after } @status.after_failure { @callbacks << :status_after } @transitions.perform assert_equal [:status_after, :state_after], @callbacks end
test_should_store_results_in_transitions()
click to toggle source
# File test/unit/transition_collection_test.rb, line 552 def test_should_store_results_in_transitions @transitions.perform assert_equal :save_state, @state_transition.result assert_equal :save_status, @status_transition.result end
test_should_succeed()
click to toggle source
# File test/unit/transition_collection_test.rb, line 537 def test_should_succeed assert_equal true, @transitions.perform end