Sha256: 873a606ce7ceacbac5dfa70b6aa985e4c4e79afcfcbfaebe288cbd8b32e31618
Contents?: true
Size: 1.44 KB
Versions: 6
Compression:
Stored size: 1.44 KB
Contents
# Hooks on state entrance / exit. Needs more attention. require 'spec_helper' require '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 :enter, :old do self.old_entered end end maintain = MaintainTest.new maintain.should_receive(:new_entered) maintain.state = :new maintain.should_receive(:old_entered).once maintain.state = :old maintain.state = :old end describe "guarding" do it "should prevent hooks from running when they return false" do MaintainTest.maintain :state do state :new state :old on :enter, :new, :new_entered, :if => :run_hook? end maintain = MaintainTest.new def maintain.run_hook? false end maintain.should_not_receive(:new_entered) maintain.state = :new maintain.state = :old maintain.state = :old end end end
Version data entries
6 entries across 6 versions & 1 rubygems