Sha256: 798ea81ac5061b3c259e219c5a4bc2c6826ecf1a4d9bf17cca4061302c2b033f

Contents?: true

Size: 988 Bytes

Versions: 2

Compression:

Stored size: 988 Bytes

Contents

# Comparing state values

require 'lib/maintain'

describe Maintain, "hooks" do
  before :each do
    class MaintainTest
      extend Maintain
    end
  end

  it "should allow me to hook into entry and exit" do
    lambda {
      MaintainTest.maintain :state do
        state :new, :enter => :new_entered
        state :old, :enter => :old_entered
        on :enter, :new, :new_entered
        on :exit, :old do
          self.old_entered
        end
      end
    }.should_not raise_error
  end

  it "should execute hooks when states are entered and exited" do
    MaintainTest.maintain :state do
      state :new
      state :old
      on :enter, :new, :new_entered
      on :exit, :old do
        self.old_entered
      end
    end

    maintain = MaintainTest.new
    maintain.should_receive(:new_entered)
    maintain.state = :new
    maintain.should_receive(:old_entered)
    maintain.state = :old
    maintain.should_not_receive(:old_entered)
    maintain.state = :old
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
maintain-0.1.1 spec/hooks_spec.rb
maintain-0.1.0 spec/hooks_spec.rb