Sha256: d4c3294022012c673ba5a0b00faa7b73deb84209ee7a3b59792a4eb69a40e546

Contents?: true

Size: 859 Bytes

Versions: 3

Compression:

Stored size: 859 Bytes

Contents

require "test_helper"

describe MicroFSM do
  let(:fsm) {
    MicroFSM.new(:pending)
      .when(:confirm, pending: :confirmed) { @state = "Confirmed" }
      .when(:reset, confirmed: :pending) { @state = "Pending" }
  }

  def test_executes_callbacks_during_transition
    fsm.trigger(:confirm)
    assert_equal "Confirmed", @state

    fsm.trigger(:reset)
    assert_equal "Pending", @state
  end

  def test_two_callbacks_during_transition
    fsm.when(:confirm, pending: :confirmed) { @state2 = "Confirmed2" }

    fsm.trigger(:confirm)
    assert_equal "Confirmed", @state
    assert_equal "Confirmed2", @state2
  end

  def test_passing_the_event_name_to_the_callbacks
    event_name = nil
    fsm.when(:confirm, pending: :confirmed) do |event|
      event_name = event
    end

    fsm.trigger(:confirm)
    assert_equal :confirm, event_name
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
microfsm-0.1.7 test/callbacks_test.rb
microfsm-0.1.6 test/callbacks_test.rb
microfsm-0.1.4 test/callbacks_test.rb