Sha256: 2d62a272397722df5c5972a4449fbd68d7fe42f8c7f2d09872584c91147476d8

Contents?: true

Size: 1.96 KB

Versions: 16

Compression:

Stored size: 1.96 KB

Contents

require_relative 'test_helper'

class MachineWithEventAttributesOnSaveBangTest < BaseTestCase
  def setup
    @model = new_model
    @machine = StateMachines::Machine.new(@model)
    @machine.event :ignite do
      transition :parked => :idling
    end

    @record = @model.new
    @record.state = 'parked'
    @record.state_event = 'ignite'
  end

  def test_should_fail_if_event_is_invalid
    @record.state_event = 'invalid'
    assert_raise(ActiveRecord::RecordInvalid) { @record.save! }
  end

  def test_should_fail_if_event_has_no_transition
    @record.state = 'idling'
    assert_raise(ActiveRecord::RecordInvalid) { @record.save! }
  end

  def test_should_be_successful_if_event_has_transition
    assert_equal true, @record.save!
  end

  def test_should_run_before_callbacks
    ran_callback = false
    @machine.before_transition { ran_callback = true }

    @record.save!
    assert ran_callback
  end

  def test_should_run_before_callbacks_once
    before_count = 0
    @machine.before_transition { before_count += 1 }

    @record.save!
    assert_equal 1, before_count
  end

  def test_should_run_around_callbacks_before_yield
    ran_callback = false
    @machine.around_transition { |block| ran_callback = true; block.call }

    @record.save!
    assert ran_callback
  end

  def test_should_run_around_callbacks_before_yield_once
    around_before_count = 0
    @machine.around_transition { |block| around_before_count += 1; block.call }

    @record.save!
    assert_equal 1, around_before_count
  end

  def test_should_persist_new_state
    @record.save!
    assert_equal 'idling', @record.state
  end

  def test_should_run_after_callbacks
    ran_callback = false
    @machine.after_transition { ran_callback = true }

    @record.save!
    assert ran_callback
  end

  def test_should_run_around_callbacks_after_yield
    ran_callback = false
    @machine.around_transition { |block| block.call; ran_callback = true }

    @record.save!
    assert ran_callback
  end
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
state_machines-activerecord-0.9.0 test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-activerecord-0.8.0 test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-activerecord-0.6.0 test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-activerecord-0.5.2 test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-activerecord-0.5.1 test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-activerecord-0.5.0 test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-activerecord-0.4.1 test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-activerecord-0.4.0 test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-activerecord-0.4.0.pre test/machine_with_event_attributes_on_save_bang_test.rb
solidus_backend-1.0.0.pre3 vendor/bundle/gems/state_machines-activerecord-0.2.0/test/machine_with_event_attributes_on_save_bang_test.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/state_machines-activerecord-0.2.0/test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-activerecord-0.3.0 test/machine_with_event_attributes_on_save_bang_test.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/state_machines-activerecord-0.2.0/test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-activerecord-0.2.0 test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-activerecord-0.1.0 test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-activerecord-0.0.1 test/machine_with_event_attributes_on_save_bang_test.rb