class ActiveModelTest::MachineWithCallbacksTest

Public Instance Methods

setup() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 455
def setup
  @model = new_model
  @machine = StateMachine::Machine.new(@model, :initial => :parked, :integration => :active_model)
  @machine.other_states :idling
  @machine.event :ignite
  
  @record = @model.new(:state => 'parked')
  @transition = StateMachine::Transition.new(@record, @machine, :ignite, :parked, :idling)
end
test_should_allow_string_callbacks() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 559
def test_should_allow_string_callbacks
  class << @record
    attr_reader :callback_result
  end
  
  @machine.before_transition('@callback_result = [1, 2, 3]')
  @transition.perform
  
  assert_equal [1, 2, 3], @record.callback_result
end
test_should_allow_symbolic_callbacks() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 545
def test_should_allow_symbolic_callbacks
  callback_args = nil
  
  klass = class << @record; self; end
  klass.send(:define_method, :after_ignite) do |*args|
    callback_args = args
  end
  
  @machine.before_transition(:after_ignite)
  
  @transition.perform
  assert_equal [@transition], callback_args
end
test_should_include_transition_states_in_known_states() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 539
def test_should_include_transition_states_in_known_states
  @machine.before_transition :to => :first_gear, :do => lambda {}
  
  assert_equal [:parked, :idling, :first_gear], @machine.states.map {|state| state.name}
end
test_should_pass_record_and_transition_to_after_callbacks_with_multiple_arguments() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 513
def test_should_pass_record_and_transition_to_after_callbacks_with_multiple_arguments
  callback_args = nil
  @machine.after_transition {|*args| callback_args = args}
  
  @transition.perform
  assert_equal [@record, @transition], callback_args
end
test_should_pass_record_and_transition_to_before_callbacks_with_multiple_arguments() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 481
def test_should_pass_record_and_transition_to_before_callbacks_with_multiple_arguments
  callback_args = nil
  @machine.before_transition {|*args| callback_args = args}
  
  @transition.perform
  assert_equal [@record, @transition], callback_args
end
test_should_pass_record_to_after_callbacks_with_one_argument() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 505
def test_should_pass_record_to_after_callbacks_with_one_argument
  record = nil
  @machine.after_transition {|arg| record = arg}
  
  @transition.perform
  assert_equal @record, record
end
test_should_pass_record_to_before_callbacks_with_one_argument() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 473
def test_should_pass_record_to_before_callbacks_with_one_argument
  record = nil
  @machine.before_transition {|arg| record = arg}
  
  @transition.perform
  assert_equal @record, record
end
test_should_run_after_callbacks() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 497
def test_should_run_after_callbacks
  called = false
  @machine.after_transition {called = true}
  
  @transition.perform
  assert called
end
test_should_run_after_callbacks_outside_the_context_of_the_record() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 521
def test_should_run_after_callbacks_outside_the_context_of_the_record
  context = nil
  @machine.after_transition {context = self}
  
  @transition.perform
  assert_equal self, context
end
test_should_run_around_callbacks() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 529
def test_should_run_around_callbacks
  before_called = false
  after_called = false
  @machine.around_transition {|block| before_called = true; block.call; after_called = true}
  
  @transition.perform
  assert before_called
  assert after_called
end
test_should_run_before_callbacks() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 465
def test_should_run_before_callbacks
  called = false
  @machine.before_transition {called = true}
  
  @transition.perform
  assert called
end
test_should_run_before_callbacks_outside_the_context_of_the_record() click to toggle source
# File test/unit/integrations/active_model_test.rb, line 489
def test_should_run_before_callbacks_outside_the_context_of_the_record
  context = nil
  @machine.before_transition {context = self}
  
  @transition.perform
  assert_equal self, context
end