class MachineWithCustomInvalidationTest

Public Instance Methods

invalidate(object, attribute, message, values = []) click to toggle source
# File test/unit/machine_test.rb, line 887
def invalidate(object, attribute, message, values = [])
  object.error = generate_message(message, values)
end
setup() click to toggle source
# File test/unit/machine_test.rb, line 883
def setup
  @integration = Module.new do
    include StateMachine::Integrations::Base
    
    def invalidate(object, attribute, message, values = [])
      object.error = generate_message(message, values)
    end
  end
  StateMachine::Integrations.const_set('Custom', @integration)
  
  @klass = Class.new do
    attr_accessor :error
  end
  
  @machine = StateMachine::Machine.new(@klass, :integration => :custom, :messages => {:invalid_transition => 'cannot %s'})
  @machine.state :parked
  
  @object = @klass.new
  @object.state = 'parked'
end
teardown() click to toggle source
# File test/unit/machine_test.rb, line 913
def teardown
  StateMachine::Integrations.send(:remove_const, 'Custom')
end
test_generate_custom_message() click to toggle source
# File test/unit/machine_test.rb, line 904
def test_generate_custom_message
  assert_equal 'cannot park', @machine.generate_message(:invalid_transition, [[:event, :park]])
end
test_use_custom_message() click to toggle source
# File test/unit/machine_test.rb, line 908
def test_use_custom_message
  @machine.invalidate(@object, :state, :invalid_transition, [[:event, 'park']])
  assert_equal 'cannot park', @object.error
end