class SequelTest::MachineWithCallbacksTest

Public Instance Methods

setup() click to toggle source
# File test/unit/integrations/sequel_test.rb, line 707
def setup
  @model = new_model
  @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_allow_string_callbacks() click to toggle source
# File test/unit/integrations/sequel_test.rb, line 805
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/sequel_test.rb, line 791
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_pass_transition_to_after_callbacks_with_multiple_arguments() click to toggle source
# File test/unit/integrations/sequel_test.rb, line 757
def test_should_pass_transition_to_after_callbacks_with_multiple_arguments
  callback_args = nil
  @machine.after_transition {|*args| callback_args = args}
  
  @transition.perform
  assert_equal [@transition], callback_args
end
test_should_pass_transition_to_before_callbacks_with_multiple_arguments() click to toggle source
# File test/unit/integrations/sequel_test.rb, line 733
def test_should_pass_transition_to_before_callbacks_with_multiple_arguments
  callback_args = nil
  @machine.before_transition {|*args| callback_args = args}
  
  @transition.perform
  assert_equal [@transition], callback_args
end
test_should_pass_transition_to_before_callbacks_with_one_argument() click to toggle source
# File test/unit/integrations/sequel_test.rb, line 725
def test_should_pass_transition_to_before_callbacks_with_one_argument
  transition = nil
  @machine.before_transition {|arg| transition = arg}
  
  @transition.perform
  assert_equal @transition, transition
end
test_should_run_after_callbacks() click to toggle source
# File test/unit/integrations/sequel_test.rb, line 749
def test_should_run_after_callbacks
  called = false
  @machine.after_transition {called = true}
  
  @transition.perform
  assert called
end
test_should_run_after_callbacks_with_the_context_of_the_record() click to toggle source
# File test/unit/integrations/sequel_test.rb, line 765
def test_should_run_after_callbacks_with_the_context_of_the_record
  context = nil
  @machine.after_transition {context = self}
  
  @transition.perform
  assert_equal @record, context
end
test_should_run_around_callbacks() click to toggle source
# File test/unit/integrations/sequel_test.rb, line 773
def test_should_run_around_callbacks
  before_called = false
  after_called = [false]
  @machine.around_transition {|block| before_called = true; block.call; after_called[0] = true}
  
  @transition.perform
  assert before_called
  assert after_called[0]
end
test_should_run_around_callbacks_with_the_context_of_the_record() click to toggle source
# File test/unit/integrations/sequel_test.rb, line 783
def test_should_run_around_callbacks_with_the_context_of_the_record
  context = nil
  @machine.around_transition {|block| context = self; block.call}
  
  @transition.perform
  assert_equal @record, context
end
test_should_run_before_callbacks() click to toggle source
# File test/unit/integrations/sequel_test.rb, line 717
def test_should_run_before_callbacks
  called = false
  @machine.before_transition {called = true}
  
  @transition.perform
  assert called
end
test_should_run_before_callbacks_within_the_context_of_the_record() click to toggle source
# File test/unit/integrations/sequel_test.rb, line 741
def test_should_run_before_callbacks_within_the_context_of_the_record
  context = nil
  @machine.before_transition {context = self}
  
  @transition.perform
  assert_equal @record, context
end