class MachineWithDynamicInitialStateTest

Public Class Methods

new(attributes = {}) click to toggle source
Calls superclass method
# File test/unit/machine_test.rb, line 359
def initialize(attributes = {})
  self.state = 'parked'
  super()
end

Public Instance Methods

setup() click to toggle source
# File test/unit/machine_test.rb, line 325
def setup
  @klass = Class.new do
    attr_accessor :initial_state
  end
  @machine = StateMachine::Machine.new(@klass, :initial => lambda {|object| object.initial_state || :default})
  @machine.state :parked, :idling, :default
  @object = @klass.new
end
test_should_have_dynamic_initial_state() click to toggle source
# File test/unit/machine_test.rb, line 334
def test_should_have_dynamic_initial_state
  assert @machine.dynamic_initial_state?
end
test_should_not_be_included_in_known_states() click to toggle source
# File test/unit/machine_test.rb, line 383
def test_should_not_be_included_in_known_states
  assert_equal [:parked, :idling, :default], @machine.states.map {|state| state.name}
end
test_should_not_set_initial_state_even_if_not_empty() click to toggle source
# File test/unit/machine_test.rb, line 357
def test_should_not_set_initial_state_even_if_not_empty
  @klass.class_eval do
    def initialize(attributes = {})
      self.state = 'parked'
      super()
    end
  end
  object = @klass.new
  assert_equal 'parked', object.state
end
test_should_set_initial_state_after_initialization() click to toggle source
# File test/unit/machine_test.rb, line 368
def test_should_set_initial_state_after_initialization
  base = Class.new do
    attr_accessor :state_on_init
    
    def initialize
      self.state_on_init = state
    end
  end
  klass = Class.new(base)
  machine = StateMachine::Machine.new(klass, :initial => lambda {|object| :parked})
  machine.state :parked
  
  assert_nil klass.new.state_on_init
end
test_should_set_initial_state_on_created_object() click to toggle source
# File test/unit/machine_test.rb, line 353
def test_should_set_initial_state_on_created_object
  assert_equal 'default', @object.state
end
test_should_use_the_record_for_determining_the_initial_state() click to toggle source
# File test/unit/machine_test.rb, line 338
def test_should_use_the_record_for_determining_the_initial_state
  @object.initial_state = :parked
  assert_equal :parked, @machine.initial_state(@object).name
  
  @object.initial_state = :idling
  assert_equal :idling, @machine.initial_state(@object).name
end
test_should_write_to_attribute_when_initializing_state() click to toggle source
# File test/unit/machine_test.rb, line 346
def test_should_write_to_attribute_when_initializing_state
  object = @klass.allocate
  object.initial_state = :parked
  @machine.initialize_state(object)
  assert_equal 'parked', object.state
end