Sha256: 3bc5ecec8ef58e17b7218dc8163a78658cc3199dedf5b5c897187f8956329633

Contents?: true

Size: 1.96 KB

Versions: 3

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_raises(Mongoid::Errors::Validations) { @record.save! }
  end

  def test_should_fail_if_event_has_no_transition
    @record.state = 'idling'
    assert_raises(Mongoid::Errors::Validations) { @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

3 entries across 3 versions & 1 rubygems

Version Path
state_machines-mongoid-0.2.0 test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-mongoid-0.1.1 test/machine_with_event_attributes_on_save_bang_test.rb
state_machines-mongoid-0.1.0 test/machine_with_event_attributes_on_save_bang_test.rb