class ActiveModelTest::MachineWithObserversTest

Public Instance Methods

after_transition(*args) click to toggle source
# File test/unit/integrations/active_model_test.rb, line 780
def after_transition(*args)
  notifications << args
end
before_ignite(*args) click to toggle source
# File test/unit/integrations/active_model_test.rb, line 792
def before_ignite(*args)
  notifications << self
end
before_transition(*args) click to toggle source
# File test/unit/integrations/active_model_test.rb, line 768
def before_transition(*args)
  notifications << args
end
setup() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 729
def setup
  @model = new_model { include ActiveModel::Observing }
  @machine = StateMachine::Machine.new(@model)
  @machine.state :parked, :idling
  @machine.event :ignite
  @record = @model.new(:state => 'parked')
  @transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, :idling)
end
test_should_call_all_transition_callback_permutations() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 738
def test_should_call_all_transition_callback_permutations
  callbacks = [
    :before_ignite_from_parked_to_idling,
    :before_ignite_from_parked,
    :before_ignite_to_idling,
    :before_ignite,
    :before_transition_state_from_parked_to_idling,
    :before_transition_state_from_parked,
    :before_transition_state_to_idling,
    :before_transition_state,
    :before_transition
  ]
  
  notified = false
  observer = new_observer(@model) do
    callbacks.each do |callback|
      define_method(callback) do |*args|
        notifications << callback
      end
    end
  end
  
  instance = observer.instance
  
  @transition.perform
  assert_equal callbacks, instance.notifications
end
test_should_call_methods_outside_the_context_of_the_record() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 790
def test_should_call_methods_outside_the_context_of_the_record
  observer = new_observer(@model) do
    def before_ignite(*args)
      notifications << self
    end
  end
  instance = observer.instance
  
  @transition.perform
  assert_equal [instance], instance.notifications
end
test_should_pass_record_and_transition_to_after_callbacks() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 778
def test_should_pass_record_and_transition_to_after_callbacks
  observer = new_observer(@model) do
    def after_transition(*args)
      notifications << args
    end
  end
  instance = observer.instance
  
  @transition.perform
  assert_equal [[@record, @transition]], instance.notifications
end
test_should_pass_record_and_transition_to_before_callbacks() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 766
def test_should_pass_record_and_transition_to_before_callbacks
  observer = new_observer(@model) do
    def before_transition(*args)
      notifications << args
    end
  end
  instance = observer.instance
  
  @transition.perform
  assert_equal [[@record, @transition]], instance.notifications
end
test_should_support_nil_from_states() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 802
def test_should_support_nil_from_states
  callbacks = [
    :before_ignite_from_nil_to_idling,
    :before_ignite_from_nil,
    :before_transition_state_from_nil_to_idling,
    :before_transition_state_from_nil
  ]
  
  notified = false
  observer = new_observer(@model) do
    callbacks.each do |callback|
      define_method(callback) do |*args|
        notifications << callback
      end
    end
  end
  
  instance = observer.instance
  
  transition = StateMachine::Transition.new(@record, @machine, :ignite, nil, :idling)
  transition.perform
  assert_equal callbacks, instance.notifications
end
test_should_support_nil_to_states() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 826
def test_should_support_nil_to_states
  callbacks = [
    :before_ignite_from_parked_to_nil,
    :before_ignite_to_nil,
    :before_transition_state_from_parked_to_nil,
    :before_transition_state_to_nil
  ]
  
  notified = false
  observer = new_observer(@model) do
    callbacks.each do |callback|
      define_method(callback) do |*args|
        notifications << callback
      end
    end
  end
  
  instance = observer.instance
  
  transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, nil)
  transition.perform
  assert_equal callbacks, instance.notifications
end