Sha256: 3096b2ea66665e813d58373dd15076d8fe670a847959486a95bd27ee01081101

Contents?: true

Size: 1.54 KB

Versions: 4

Compression:

Stored size: 1.54 KB

Contents

require "helper"

class MachineTestSubject
  include Transitions

  state_machine :initial => :closed do
    state :open
    state :closed

    event :shutdown do
      transitions :from => :open, :to => :closed
    end

    event :timeout do
      transitions :from => :open, :to => :closed
    end

    event :restart do
      transitions :from => :closed, to: :open
    end
  end
end

class TransitionsMachineTest < Test::Unit::TestCase
  test "sets #initial_state from :initial option" do
    assert_equal :closed, MachineTestSubject.get_state_machine.initial_state
  end

  test "`get_state_machine` returns Transitions::Machine" do
    assert_kind_of Transitions::Machine, MachineTestSubject.get_state_machine
  end

  test "finds events for given state" do
    events = MachineTestSubject.get_state_machine.events_for(:open)
    assert events.include?(:shutdown)
    assert events.include?(:timeout)
  end

  test "knows all available transitions for current state" do
    machine = MachineTestSubject.new
    assert_equal [:restart], machine.available_transitions
    machine.restart
    assert_equal [:shutdown, :timeout], machine.available_transitions
  end

  test "knows that it can use a transition when it is available" do
    machine = MachineTestSubject.new
    machine.restart
    assert machine.can_transition?(:shutdown)
  end

  test "knows that it can't use a transition when it is unavailable" do
    machine = MachineTestSubject.new
    assert machine.cant_transition?(:shutdown)
  end

  test "test fire_event" do
    pend "Implement me"
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
transitions-0.1.13 test/machine/test_machine.rb
transitions-0.1.12 test/machine/test_machine.rb
transitions-0.1.11 test/machine/test_machine.rb
transitions-0.1.10 test/machine/test_machine.rb