class ActiveRecordTest::MachineWithDynamicInitialStateTest

Public Instance Methods

setup() click to toggle source
# File test/unit/integrations/active_record_test.rb, line 240
def setup
  @model = new_model do
    attr_accessor :value
  end
  @machine = StateMachine::Machine.new(@model, :initial => lambda {|object| :parked})
  @machine.state :parked
end
test_should_not_set_initial_state_after_already_initialized() click to toggle source
# File test/unit/integrations/active_record_test.rb, line 290
def test_should_not_set_initial_state_after_already_initialized
  record = @model.new(:value => 1)
  assert_equal 'parked', record.state
  
  record.state = 'idling'
  record.attributes = {}
  assert_equal 'idling', record.state
end
test_should_set_attributes_prior_to_after_initialize_hook() click to toggle source
# File test/unit/integrations/active_record_test.rb, line 267
def test_should_set_attributes_prior_to_after_initialize_hook
  state = nil
  @model.class_eval {define_method(:after_initialize) {}} if ::ActiveRecord::VERSION::MAJOR <= 2
  @model.after_initialize do |record|
    state = record.state
  end
  @model.new
  assert_equal 'parked', state
end
test_should_set_initial_state_after_setting_attributes() click to toggle source
# File test/unit/integrations/active_record_test.rb, line 277
def test_should_set_initial_state_after_setting_attributes
  @model.class_eval do
    attr_accessor :state_during_setter
    
    define_method(:value=) do |value|
      self.state_during_setter = state || 'nil'
    end
  end
  
  record = @model.new(:value => 1)
  assert_equal 'nil', record.state_during_setter
end
test_should_set_initial_state_on_created_object() click to toggle source
# File test/unit/integrations/active_record_test.rb, line 248
def test_should_set_initial_state_on_created_object
  record = @model.new
  assert_equal 'parked', record.state
end
test_should_still_allow_initialize_blocks() click to toggle source
# File test/unit/integrations/active_record_test.rb, line 258
def test_should_still_allow_initialize_blocks
  block_args = nil
  record = @model.new do |*args|
    block_args = args
  end
  
  assert_equal [record], block_args
end
test_should_still_set_attributes() click to toggle source
# File test/unit/integrations/active_record_test.rb, line 253
def test_should_still_set_attributes
  record = @model.new(:value => 1)
  assert_equal 1, record.value
end
test_should_use_stored_values_when_loading_from_database() click to toggle source
# File test/unit/integrations/active_record_test.rb, line 299
def test_should_use_stored_values_when_loading_from_database
  @machine.state :idling
  
  record = @model.find(@model.create(:state => 'idling').id)
  assert_equal 'idling', record.state
end
test_should_use_stored_values_when_loading_from_database_with_nil_state() click to toggle source
# File test/unit/integrations/active_record_test.rb, line 306
def test_should_use_stored_values_when_loading_from_database_with_nil_state
  @machine.state nil
  
  record = @model.find(@model.create(:state => nil).id)
  assert_nil record.state
end