Sha256: 19b6692dc25e116aaabeecdfc2a7337dd6380d3a92de88db6e7cc6743381e1f3

Contents?: true

Size: 1.96 KB

Versions: 14

Compression:

Stored size: 1.96 KB

Contents

require_relative '../../test_helper'

class EventCollectionAttributeWithMachineActionTest < StateMachinesTest
  def setup
    @klass = Class.new do
      def save
      end
    end

    @machine = StateMachines::Machine.new(@klass, initial: :parked, action: :save)
    @events = StateMachines::EventCollection.new(@machine)

    @machine.state :parked, :idling
    @events << @ignite = StateMachines::Event.new(@machine, :ignite)
    @machine.events.concat(@events)

    @object = @klass.new
  end

  def test_should_not_have_transition_if_nil
    @object.state_event = nil
    assert_nil @events.attribute_transition_for(@object)
  end

  def test_should_not_have_transition_if_empty
    @object.state_event = ''
    assert_nil @events.attribute_transition_for(@object)
  end

  def test_should_have_invalid_transition_if_invalid_event_specified
    @object.state_event = 'invalid'
    assert_equal false, @events.attribute_transition_for(@object)
  end

  def test_should_have_invalid_transition_if_event_cannot_be_fired
    @object.state_event = 'ignite'
    assert_equal false, @events.attribute_transition_for(@object)
  end

  def test_should_have_valid_transition_if_event_can_be_fired
    @ignite.transition parked: :idling
    @object.state_event = 'ignite'

    assert_instance_of StateMachines::Transition, @events.attribute_transition_for(@object)
  end

  def test_should_have_valid_transition_if_already_defined_in_transition_cache
    @ignite.transition parked: :idling
    @object.state_event = nil
    @object.send(:state_event_transition=, transition = @ignite.transition_for(@object))

    assert_equal transition, @events.attribute_transition_for(@object)
  end

  def test_should_use_transition_cache_if_both_event_and_transition_are_present
    @ignite.transition parked: :idling
    @object.state_event = 'ignite'
    @object.send(:state_event_transition=, transition = @ignite.transition_for(@object))

    assert_equal transition, @events.attribute_transition_for(@object)
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

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