class TransitionWithAfterCallbacksTest

Public Instance Methods

setup() click to toggle source
# File test/unit/transition_test.rb, line 553
def setup
  @klass = Class.new
  
  @machine = StateMachine::Machine.new(@klass)
  @machine.state :parked, :idling
  @machine.event :ignite
  
  @object = @klass.new
  @object.state = 'parked'
  @transition = StateMachine::Transition.new(@object, @machine, :ignite, :parked, :idling)
end
test_should_be_able_to_run_again_after_resetting() click to toggle source
# File test/unit/transition_test.rb, line 634
def test_should_be_able_to_run_again_after_resetting
  @count = 0
  @machine.after_transition {@count += 1}
  @transition.run_callbacks
  @transition.reset
  @transition.run_callbacks
  assert_equal 2, @count
end
test_should_catch_halts() click to toggle source
# File test/unit/transition_test.rb, line 605
def test_should_catch_halts
  @machine.after_transition {throw :halt}
  
  result = nil
  assert_nothing_thrown { result = @transition.run_callbacks }
  assert_equal true, result
end
test_should_not_be_able_to_run_twice() click to toggle source
# File test/unit/transition_test.rb, line 618
def test_should_not_be_able_to_run_twice
  @count = 0
  @machine.after_transition {@count += 1}
  @transition.run_callbacks
  @transition.run_callbacks
  assert_equal 1, @count
end
test_should_not_be_able_to_run_twice_if_halted() click to toggle source
# File test/unit/transition_test.rb, line 626
def test_should_not_be_able_to_run_twice_if_halted
  @count = 0
  @machine.after_transition {@count += 1; throw :halt}
  @transition.run_callbacks
  @transition.run_callbacks
  assert_equal 1, @count
end
test_should_not_catch_exceptions() click to toggle source
# File test/unit/transition_test.rb, line 613
def test_should_not_catch_exceptions
  @machine.after_transition {raise ArgumentError}
  assert_raise(ArgumentError) { @transition.run_callbacks }
end
test_should_not_run_if_not_successful() click to toggle source
# File test/unit/transition_test.rb, line 586
def test_should_not_run_if_not_successful
  @machine.after_transition {|object| @run = true}
  @transition.run_callbacks {{:success => false}}
  assert !@run
end
test_should_only_run_those_that_match_transition_context() click to toggle source
# File test/unit/transition_test.rb, line 573
def test_should_only_run_those_that_match_transition_context
  @count = 0
  callback = lambda {@count += 1}
  
  @machine.after_transition :from => :parked, :to => :idling, :on => :park, :do => callback
  @machine.after_transition :from => :parked, :to => :parked, :on => :park, :do => callback
  @machine.after_transition :from => :parked, :to => :idling, :on => :ignite, :do => callback
  @machine.after_transition :from => :idling, :to => :idling, :on => :park, :do => callback
  @transition.run_callbacks
  
  assert_equal 1, @count
end
test_should_pass_transition_as_argument() click to toggle source
# File test/unit/transition_test.rb, line 598
def test_should_pass_transition_as_argument
  @machine.after_transition {|*args| @args = args}
  
  @transition.run_callbacks
  assert_equal [@object, @transition], @args
end
test_should_run_after_callbacks() click to toggle source
# File test/unit/transition_test.rb, line 565
def test_should_run_after_callbacks
  @machine.after_transition {|object| @run = true}
  result = @transition.run_callbacks
  
  assert_equal true, result
  assert_equal true, @run
end
test_should_run_if_successful() click to toggle source
# File test/unit/transition_test.rb, line 592
def test_should_run_if_successful
  @machine.after_transition {|object| @run = true}
  @transition.run_callbacks {{:success => true}}
  assert @run
end