0
@@ -4,7 +4,7 @@ class TransitionTest < Test::Unit::TestCase
0
@machine = PluginAWeek::StateMachine::Machine.new(Switch, 'state', :initial => 'off')
0
@event = PluginAWeek::StateMachine::Event.new(@machine, 'turn_on')
0
- @transition = PluginAWeek::StateMachine::Transition.new(@event,
'on')
0
+ @transition = PluginAWeek::StateMachine::Transition.new(@event,
:to => 'on')
0
def test_should_not_have_any_from_states
0
@@ -66,13 +66,21 @@ class TransitionTest < Test::Unit::TestCase
0
assert_raise(ActiveRecord::RecordNotSaved) {@transition.perform!(record)}
0
+ def test_should_raise_exception_if_invalid_option_specified
0
+ assert_raise(ArgumentError) {PluginAWeek::StateMachine::Transition.new(@event, :invalid => true)}
0
+ def test_should_raise_exception_if_to_option_not_specified
0
+ assert_raise(ArgumentError) {PluginAWeek::StateMachine::Transition.new(@event, :from => 'off')}
0
class TransitionWithLoopbackTest < Test::Unit::TestCase
0
@machine = PluginAWeek::StateMachine::Machine.new(Switch, 'state', :initial => 'off')
0
@event = PluginAWeek::StateMachine::Event.new(@machine, 'turn_on')
0
- @transition = PluginAWeek::StateMachine::Transition.new(@event,
'on', 'on')
0
+ @transition = PluginAWeek::StateMachine::Transition.new(@event,
:to => 'on', :from => 'on')
0
def test_should_be_able_to_perform
0
@@ -90,7 +98,7 @@ class TransitionWithFromStateTest < Test::Unit::TestCase
0
@machine = PluginAWeek::StateMachine::Machine.new(Switch, 'state', :initial => 'off')
0
@event = PluginAWeek::StateMachine::Event.new(@machine, 'turn_on')
0
- @transition = PluginAWeek::StateMachine::Transition.new(@event,
'on', 'off')
0
+ @transition = PluginAWeek::StateMachine::Transition.new(@event,
:to => 'on', :from => 'off')
0
def test_should_have_a_from_state
0
@@ -117,7 +125,7 @@ class TransitionWithMultipleFromStatesTest < Test::Unit::TestCase
0
@machine = PluginAWeek::StateMachine::Machine.new(Switch, 'state', :initial => 'off')
0
@event = PluginAWeek::StateMachine::Event.new(@machine, 'turn_on')
0
- @transition = PluginAWeek::StateMachine::Transition.new(@event,
'on', 'off', 'on')
0
+ @transition = PluginAWeek::StateMachine::Transition.new(@event,
:to => 'on', :from => %w(off on))
0
def test_should_have_multiple_from_states
0
@@ -142,15 +150,47 @@ class TransitionWithMultipleFromStatesTest < Test::Unit::TestCase
0
assert @transition.perform(record)
0
record = new_switch(:state => 'on')
0
+ assert @transition.perform(record)
0
+class TransitionWithMismatchedFromStatesRequiredTest < Test::Unit::TestCase
0
+ @machine = PluginAWeek::StateMachine::Machine.new(Switch, 'state', :initial => 'off')
0
+ @event = PluginAWeek::StateMachine::Event.new(@machine, 'turn_on')
0
+ @transition = PluginAWeek::StateMachine::Transition.new(@event, :to => 'on', :except_from => 'on')
0
+ def test_should_have_a_from_state
0
+ assert_equal ['on'], @transition.from_states
0
+ def test_should_be_able_to_perform_if_record_state_is_not_from_state
0
+ record = new_switch(:state => 'off')
0
assert @transition.can_perform_on?(record)
0
+ def test_should_not_be_able_to_perform_if_record_state_is_from_state
0
+ record = new_switch(:state => 'on')
0
+ assert !@transition.can_perform_on?(record)
0
+ def test_should_perform_for_valid_from_state
0
+ record = new_switch(:state => 'off')
0
+ assert @transition.perform(record)
0
+ def test_should_not_perform_for_invalid_from_state
0
+ record = new_switch(:state => 'on')
0
+ assert !@transition.can_perform_on?(record)
0
class TransitionAfterBeingPerformedTest < Test::Unit::TestCase
0
@machine = PluginAWeek::StateMachine::Machine.new(Switch, 'state', :initial => 'off')
0
@event = PluginAWeek::StateMachine::Event.new(@machine, 'turn_on')
0
- @transition = PluginAWeek::StateMachine::Transition.new(@event,
'on', 'off')
0
+ @transition = PluginAWeek::StateMachine::Transition.new(@event,
:to => 'on', :from => 'off')
0
@record = create_switch(:state => 'off')
0
@transition.perform(@record)
0
@@ -170,7 +210,7 @@ class TransitionWithLoopbackAfterBeingPerformedTest < Test::Unit::TestCase
0
@machine = PluginAWeek::StateMachine::Machine.new(Switch, 'state', :initial => 'off')
0
@event = PluginAWeek::StateMachine::Event.new(@machine, 'turn_on')
0
- @transition = PluginAWeek::StateMachine::Transition.new(@event,
'on', 'on')
0
+ @transition = PluginAWeek::StateMachine::Transition.new(@event,
:to => 'on', :from => 'on')
0
@record = create_switch(:state => 'on')
0
@transition.perform(@record)
0
@@ -190,7 +230,7 @@ class TransitionWithCallbacksTest < Test::Unit::TestCase
0
@machine = PluginAWeek::StateMachine::Machine.new(Switch, 'state', :initial => 'off')
0
@event = PluginAWeek::StateMachine::Event.new(@machine, 'turn_on')
0
- @transition = PluginAWeek::StateMachine::Transition.new(@event,
'on', 'off')
0
+ @transition = PluginAWeek::StateMachine::Transition.new(@event,
:to => 'on', :from => 'off')
0
@record = create_switch(:state => 'off')
0
Switch.define_callbacks :before_exit_state_off, :before_enter_state_on, :after_exit_state_off, :after_enter_state_on
0
@@ -323,7 +363,7 @@ class TransitionWithoutFromStateAndCallbacksTest < Test::Unit::TestCase
0
@machine = PluginAWeek::StateMachine::Machine.new(Switch, 'state', :initial => 'off')
0
@event = PluginAWeek::StateMachine::Event.new(@machine, 'turn_on')
0
- @transition = PluginAWeek::StateMachine::Transition.new(@event,
'on')
0
+ @transition = PluginAWeek::StateMachine::Transition.new(@event,
:to => 'on')
0
@record = create_switch(:state => 'off')
0
Switch.define_callbacks :before_exit_state_off, :before_enter_state_on, :after_exit_state_off, :after_enter_state_on
0
@@ -425,7 +465,7 @@ class TransitionWithLoopbackAndCallbacksTest < Test::Unit::TestCase
0
@machine = PluginAWeek::StateMachine::Machine.new(Switch, 'state', :initial => 'off')
0
@event = PluginAWeek::StateMachine::Event.new(@machine, 'turn_on')
0
- @transition = PluginAWeek::StateMachine::Transition.new(@event,
'on', 'on')
0
+ @transition = PluginAWeek::StateMachine::Transition.new(@event,
:to => 'on', :from => 'on')
0
@record = create_switch(:state => 'on')
0
Switch.define_callbacks :before_exit_state_off, :before_enter_state_on, :after_exit_state_off, :after_enter_state_on
Comments
No one has commented yet.