Sha256: 37b403467c1b9d07b3d501b4752dfaa3ff5509b139fc862cd206f070496d3d00

Contents?: true

Size: 1.73 KB

Versions: 14

Compression:

Stored size: 1.73 KB

Contents

require_relative '../../test_helper'

class MachineWithStatesTest < StateMachinesTest
  def setup
    @klass = Class.new
    @machine = StateMachines::Machine.new(@klass)
    @parked, @idling = @machine.state :parked, :idling

    @object = @klass.new
  end

  def test_should_have_states
    assert_equal [nil, :parked, :idling], @machine.states.map { |state| state.name }
  end

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

  def test_should_allow_state_lookup_by_value
    assert_equal @parked, @machine.states['parked', :value]
  end

  def test_should_allow_human_state_name_lookup
    assert_equal 'parked', @klass.human_state_name(:parked)
  end

  def test_should_raise_exception_on_invalid_human_state_name_lookup
    exception = assert_raises(IndexError) { @klass.human_state_name(:invalid) }
    assert_equal ':invalid is an invalid name', exception.message
  end

  def test_should_use_stringified_name_for_value
    assert_equal 'parked', @parked.value
  end

  def test_should_not_use_custom_matcher
    assert_nil @parked.matcher
  end

  def test_should_raise_exception_if_invalid_option_specified
    exception = assert_raises(ArgumentError) { @machine.state(:first_gear, invalid: true) }
    assert_equal 'Unknown key: :invalid. Valid keys are: :value, :cache, :if, :human_name', exception.message
  end

  def test_should_raise_exception_if_conflicting_type_used_for_name
    exception = assert_raises(ArgumentError) { @machine.state 'first_gear' }
    assert_equal '"first_gear" state defined as String, :parked defined as Symbol; all states must be consistent', exception.message
  end

  def test_should_not_raise_exception_if_conflicting_type_is_nil_for_name
    @machine.state nil
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

Version Path
state_machines-0.5.0 test/unit/machine/machine_with_states_test.rb
solidus_backend-1.0.0.pre3 vendor/bundle/gems/state_machines-0.2.2/test/unit/machine/machine_with_states_test.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/state_machines-0.2.2/test/unit/machine/machine_with_states_test.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/state_machines-0.2.2/test/unit/machine/machine_with_states_test.rb
state_machines-0.4.0 test/unit/machine/machine_with_states_test.rb
state_machines-0.3.0 test/unit/machine/machine_with_states_test.rb
state_machines-0.2.2 test/unit/machine/machine_with_states_test.rb
state_machines-0.2.1 test/unit/machine/machine_with_states_test.rb
state_machines-0.2.0 test/unit/machine/machine_with_states_test.rb
state_machines-0.1.4 test/unit/machine/machine_with_states_test.rb
state_machines-0.1.3 test/unit/machine/machine_with_states_test.rb
state_machines-0.1.2 test/unit/machine/machine_with_states_test.rb
state_machines-0.1.1 test/unit/machine/machine_with_states_test.rb
state_machines-0.1.0 test/unit/machine/machine_with_states_test.rb