class MachineWithFailureCallbacksTest

Public Instance Methods

setup() click to toggle source
# File test/unit/machine_test.rb, line 2651
def setup
  @klass = Class.new do
    attr_accessor :callbacks
  end
  
  @machine = StateMachine::Machine.new(@klass, :initial => :parked)
  @event = @machine.event :ignite
  
  @object = @klass.new
  @object.callbacks = []
end
test_should_allow_multiple_callbacks() click to toggle source
# File test/unit/machine_test.rb, line 2680
def test_should_allow_multiple_callbacks
  @machine.after_failure lambda {|object| object.callbacks << 'failure1'}, lambda {|object| object.callbacks << 'failure2'}
  
  @event.fire(@object)
  assert_equal %w(failure1 failure2), @object.callbacks
end
test_should_allow_multiple_callbacks_with_requirements() click to toggle source
# File test/unit/machine_test.rb, line 2687
def test_should_allow_multiple_callbacks_with_requirements
  @machine.after_failure lambda {|object| object.callbacks << 'failure_ignite1'}, lambda {|object| object.callbacks << 'failure_ignite2'}, :on => :ignite
  @machine.after_failure lambda {|object| object.callbacks << 'failure_park1'}, lambda {|object| object.callbacks << 'failure_park2'}, :on => :park
  
  @event.fire(@object)
  assert_equal %w(failure_ignite1 failure_ignite2), @object.callbacks
end
test_should_invoke_callbacks_during_failed_transition() click to toggle source
# File test/unit/machine_test.rb, line 2673
def test_should_invoke_callbacks_during_failed_transition
  @machine.after_failure lambda {|object| object.callbacks << 'failure'}
  
  @event.fire(@object)
  assert_equal %w(failure), @object.callbacks
end
test_should_raise_exception_if_implicit_option_specified() click to toggle source
# File test/unit/machine_test.rb, line 2663
def test_should_raise_exception_if_implicit_option_specified
  exception = assert_raise(ArgumentError) {@machine.after_failure :invalid => :valid, :do => lambda {}}
  assert_equal 'Invalid key(s): invalid', exception.message
end
test_should_raise_exception_if_method_not_specified() click to toggle source
# File test/unit/machine_test.rb, line 2668
def test_should_raise_exception_if_method_not_specified
  exception = assert_raise(ArgumentError) {@machine.after_failure :on => :ignite}
  assert_equal 'Method(s) for callback must be specified', exception.message
end