Sha256: 5f325bd57781cad395bc4c02aebc36365bedb48ae6b468d9a7a00dd450ef4db6

Contents?: true

Size: 1.27 KB

Versions: 14

Compression:

Stored size: 1.27 KB

Contents

require_relative '../../test_helper'

class MachineCollectionFireAttributesWithValidationsTest < StateMachinesTest
  def setup
    @klass = Class.new do
      attr_accessor :errors

      def initialize
        @errors = []
        super
      end
    end

    @machines = StateMachines::MachineCollection.new
    @machines[:state] = @machine = StateMachines::Machine.new(@klass, :state, initial: :parked, action: :save)
    @machine.event :ignite do
      transition parked: :idling
    end

    class << @machine
      def invalidate(object, _attribute, message, values = [])
        (object.errors ||= []) << generate_message(message, values)
      end

      def reset(object)
        object.errors = []
      end
    end

    @object = @klass.new
  end

  def test_should_invalidate_if_event_is_invalid
    @object.state_event = 'invalid'
    @machines.transitions(@object, :save)

    refute @object.errors.empty?
  end

  def test_should_invalidate_if_no_transition_exists
    @object.state = 'idling'
    @object.state_event = 'ignite'
    @machines.transitions(@object, :save)

    refute @object.errors.empty?
  end

  def test_should_not_invalidate_if_transition_exists
    @object.state_event = 'ignite'
    @machines.transitions(@object, :save)

    assert @object.errors.empty?
  end
end

Version data entries

14 entries across 14 versions & 2 rubygems

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