Sha256: 3f69062f229d40e70645ba0e6415d904aed646707d55123a63e784858bea83ab

Contents?: true

Size: 1.52 KB

Versions: 1

Compression:

Stored size: 1.52 KB

Contents

require "helper"

class TestStateTransitionGuardCheck < Test::Unit::TestCase
  args = [:foo, "bar"]

  test "should return true of there is no guard" do
    opts = {:from => "foo", :to => "bar"}
      st = Transitions::StateTransition.new(opts)

    assert st.executable?(nil, *args)
  end

  test "should call the method on the object if guard is a symbol" do
    opts = {:from => "foo", :to => "bar", :guard => :test_guard}
    st = Transitions::StateTransition.new(opts)

    obj = stub
    obj.expects(:test_guard).with(*args)

    st.executable?(obj, *args)
  end

  test "should call the method on the object if guard is a string" do
    opts = {:from => "foo", :to => "bar", :guard => "test_guard"}
    st = Transitions::StateTransition.new(opts)

    obj = stub
    obj.expects(:test_guard).with(*args)

    st.executable?(obj, *args)
  end

  test "should call the proc passing the object if the guard is a proc" do
    opts = {:from => "foo", :to => "bar", :guard => Proc.new {|o, *args| o.test_guard(*args)}}
    st = Transitions::StateTransition.new(opts)

    obj = stub
    obj.expects(:test_guard).with(*args)

    st.executable?(obj, *args)
  end

  test "should call the method on the object if guard is a symbol" do
    opts = {:from => "foo", :to => "bar", :guard => [:test_guard, :test_another_guard] }
    st = Transitions::StateTransition.new(opts)

    obj = stub
    obj.expects(:test_guard).with(*args).returns(true)
    obj.expects(:test_another_guard).with(*args).returns(true)

    assert st.executable?(obj, *args)
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
transitions-0.1.12 test/state_transition/test_state_transition_guard_check.rb