Sha256: 97791548be15c155a773a9f89b0d75deee7c8ea0aba50044d63104ac666ca0d5

Contents?: true

Size: 1.47 KB

Versions: 4

Compression:

Stored size: 1.47 KB

Contents

require_relative '../../test_helper'

class MachineWithStaticInitialStateTest < StateMachinesTest
  def setup
    @klass = Class.new
    @machine = StateMachines::Machine.new(@klass, initial: :parked)
  end

  def test_should_not_have_dynamic_initial_state
    refute @machine.dynamic_initial_state?
  end

  def test_should_have_an_initial_state
    object = @klass.new
    assert_equal 'parked', @machine.initial_state(object).value
  end

  def test_should_write_to_attribute_when_initializing_state
    object = @klass.allocate
    @machine.initialize_state(object)
    assert_equal 'parked', object.state
  end

  def test_should_set_initial_on_state_object
    assert @machine.state(:parked).initial
  end

  def test_should_set_initial_state_on_created_object
    assert_equal 'parked', @klass.new.state
  end

  def test_not_set_initial_state_even_if_not_empty
    @klass.class_eval do
      def initialize(_attributes = {})
        self.state = 'idling'
        super()
      end
    end
    object = @klass.new
    assert_equal 'idling', object.state
  end

  def test_should_set_initial_state_prior_to_initialization
    base = Class.new do
      attr_accessor :state_on_init

      def initialize
        self.state_on_init = state
      end
    end
    klass = Class.new(base)
    StateMachines::Machine.new(klass, initial: :parked)

    assert_equal 'parked', klass.new.state_on_init
  end

  def test_should_be_included_in_known_states
    assert_equal [:parked], @machine.states.keys
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
state_machines-0.1.3 test/unit/machine/machine_with_static_initial_state_test.rb
state_machines-0.1.2 test/unit/machine/machine_with_static_initial_state_test.rb
state_machines-0.1.1 test/unit/machine/machine_with_static_initial_state_test.rb
state_machines-0.1.0 test/unit/machine/machine_with_static_initial_state_test.rb