Sha256: da377fadab6074832be1bbccadcb211ea5e8a7096b1921377e4db3fe249c1f4a

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 KB

Contents

require_relative "helper"

setup do
  machine = MicroMachine.new(:pending)
  machine.when(:confirm, pending: :confirmed)
  machine.when(:reset, confirmed: :pending)

  machine.on(:pending)   { @state = "Pending" }
  machine.on(:confirmed) { @state = "Confirmed" }
  machine.on(:any)       { @current = @state }

  machine
end

test "executes callbacks when entering a state" do |machine|
  machine.trigger(:confirm)
  assert_equal "Confirmed", @state

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

test "executes the callback on any transition" do |machine|
  machine.trigger(:confirm)
  assert_equal "Confirmed", @current

  machine.trigger(:reset)
  assert_equal "Pending", @current
end

test "passing the event name to the callbacks" do
  event_name = nil

  machine = MicroMachine.new(:pending)
  machine.when(:confirm, pending: :confirmed)

  machine.on(:confirmed) do |event|
    event_name = event
  end

  machine.trigger(:confirm)

  assert_equal(:confirm, event_name)
end

test "passing the payload from transition to the callbacks" do
  received_payload = nil

  machine = MicroMachine.new(:pending)
  machine.when(:confirm, pending: :confirmed)

  machine.on(:confirmed) do |_event, payload|
    received_payload = payload
  end

  machine.trigger(:confirm, foo: :bar)

  assert_equal({ foo: :bar }, received_payload)
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
micromachine-3.0.0 test/callbacks.rb