class DataMapperTest::MachineWithMixedCallbacksTest

Public Instance Methods

setup() click to toggle source
# File test/unit/integrations/data_mapper_test.rb, line 1733
def setup
  @resource = new_resource
  @machine = StateMachine::Machine.new(@resource)
  @machine.state :parked, :idling
  @machine.event :ignite
  @record = @resource.new(:state => 'parked')
  @transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, :idling)
  
  @notifications = notifications = []
  
  # Create callbacks
  @machine.before_transition {notifications << :callback_before_transition}
  @machine.after_transition {notifications << :callback_after_transition}
  @machine.around_transition do |block|
    notifications << :callback_around_before_transition
    block.call
    notifications << :callback_around_after_transition
  end
  
  observer = new_observer(@resource) do
    before_transition do
      notifications << :observer_before_transition
    end
    
    after_transition do
      notifications << :observer_after_transition
    end
    
    around_transition do |block|
      notifications << :observer_around_before_transition
      block.call
      notifications << :observer_around_after_transition
    end
  end
  
  @transition.perform
end
test_should_invoke_callbacks_in_specific_order() click to toggle source
# File test/unit/integrations/data_mapper_test.rb, line 1771
def test_should_invoke_callbacks_in_specific_order
  expected = [
    :callback_before_transition,
    :callback_around_before_transition,
    :observer_before_transition,
    :observer_around_before_transition,
    :observer_around_after_transition,
    :callback_around_after_transition,
    :callback_after_transition,
    :observer_after_transition
  ]
  
  assert_equal expected, @notifications
end