class EventCollectionWithEventsWithTransitionsTest

Public Instance Methods

setup() click to toggle source
# File test/unit/event_collection_test.rb, line 53
def setup
  @klass = Class.new
  @machine = StateMachine::Machine.new(@klass, :initial => :parked)
  @events = StateMachine::EventCollection.new(@machine)
  
  @machine.state :idling, :first_gear
  
  @events << @ignite = StateMachine::Event.new(@machine, :ignite)
  @ignite.transition :parked => :idling
  
  @events << @park = StateMachine::Event.new(@machine, :park)
  @park.transition :idling => :parked
  
  @events << @shift_up = StateMachine::Event.new(@machine, :shift_up)
  @shift_up.transition :parked => :first_gear
  @shift_up.transition :idling => :first_gear, :if => lambda{false}
  
  @machine.events.concat(@events)
  
  @object = @klass.new
end
test_should_allow_finding_valid_events_without_guards() click to toggle source
# File test/unit/event_collection_test.rb, line 95
def test_should_allow_finding_valid_events_without_guards
  assert_equal [@shift_up], @events.valid_for(@object, :from => :idling, :to => :first_gear, :guard => false)
end
test_should_allow_finding_valid_transitions_without_guards() click to toggle source
# File test/unit/event_collection_test.rb, line 122
def test_should_allow_finding_valid_transitions_without_guards
  assert_equal [StateMachine::Transition.new(@object, @machine, :shift_up, :idling, :first_gear)], @events.transitions_for(@object, :from => :idling, :to => :first_gear, :guard => false)
end
test_should_filter_valid_events_by_event() click to toggle source
# File test/unit/event_collection_test.rb, line 87
def test_should_filter_valid_events_by_event
  assert_equal [@ignite], @events.valid_for(@object, :on => :ignite)
end
test_should_filter_valid_events_by_from_state() click to toggle source
# File test/unit/event_collection_test.rb, line 79
def test_should_filter_valid_events_by_from_state
  assert_equal [@park], @events.valid_for(@object, :from => :idling)
end
test_should_filter_valid_events_by_multiple_requirements() click to toggle source
# File test/unit/event_collection_test.rb, line 91
def test_should_filter_valid_events_by_multiple_requirements
  assert_equal [], @events.valid_for(@object, :from => :idling, :to => :first_gear)
end
test_should_filter_valid_events_by_to_state() click to toggle source
# File test/unit/event_collection_test.rb, line 83
def test_should_filter_valid_events_by_to_state
  assert_equal [@shift_up], @events.valid_for(@object, :to => :first_gear)
end
test_should_filter_valid_transitions_by_event() click to toggle source
# File test/unit/event_collection_test.rb, line 114
def test_should_filter_valid_transitions_by_event
  assert_equal [StateMachine::Transition.new(@object, @machine, :ignite, :parked, :idling)], @events.transitions_for(@object, :on => :ignite)
end
test_should_filter_valid_transitions_by_from_state() click to toggle source
# File test/unit/event_collection_test.rb, line 106
def test_should_filter_valid_transitions_by_from_state
  assert_equal [StateMachine::Transition.new(@object, @machine, :park, :idling, :parked)], @events.transitions_for(@object, :from => :idling)
end
test_should_filter_valid_transitions_by_multiple_requirements() click to toggle source
# File test/unit/event_collection_test.rb, line 118
def test_should_filter_valid_transitions_by_multiple_requirements
  assert_equal [], @events.transitions_for(@object, :from => :idling, :to => :first_gear)
end
test_should_filter_valid_transitions_by_to_state() click to toggle source
# File test/unit/event_collection_test.rb, line 110
def test_should_filter_valid_transitions_by_to_state
  assert_equal [StateMachine::Transition.new(@object, @machine, :shift_up, :parked, :first_gear)], @events.transitions_for(@object, :to => :first_gear)
end
test_should_find_valid_events_based_on_current_state() click to toggle source
# File test/unit/event_collection_test.rb, line 75
def test_should_find_valid_events_based_on_current_state
  assert_equal [@ignite, @shift_up], @events.valid_for(@object)
end
test_should_find_valid_transitions_based_on_current_state() click to toggle source
# File test/unit/event_collection_test.rb, line 99
def test_should_find_valid_transitions_based_on_current_state
  assert_equal [
    StateMachine::Transition.new(@object, @machine, :ignite, :parked, :idling),
    StateMachine::Transition.new(@object, @machine, :shift_up, :parked, :first_gear)
  ], @events.transitions_for(@object)
end