From 17884eb9f280e73eef664818785ba1233446636e Mon Sep 17 00:00:00 2001 From: Scott Petersen Date: Thu, 26 Feb 2009 15:11:00 -0600 Subject: [PATCH] Added basic spec for new callbacks. --- spec/unit/before_after_callbacks_spec.rb | 71 ++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 spec/unit/before_after_callbacks_spec.rb diff --git a/spec/unit/before_after_callbacks_spec.rb b/spec/unit/before_after_callbacks_spec.rb new file mode 100644 index 0000000..808f5b6 --- /dev/null +++ b/spec/unit/before_after_callbacks_spec.rb @@ -0,0 +1,71 @@ +require File.join(File.dirname(__FILE__), '..', 'spec_helper') + +class Foo2 + include AASM + aasm_initial_state :open + aasm_state :open, :before_enter => :before_enter_open, :before_exit => :before_exit_open, :after_enter => :after_enter_open, :after_exit => :after_exit_open + aasm_state :closed, :before_enter => :before_enter_closed, :before_exit => :before_exit_closed, :after_enter => :after_enter_closed, :after_exit => :after_exit_closed + + aasm_event :close, :before => :before, :after => :after do + transitions :to => :closed, :from => [:open] + end + + aasm_event :open, :before => :before, :after => :after do + transitions :to => :open, :from => :closed + end + + def before_enter_open + end + def before_exit_open + end + def after_enter_open + end + def after_exit_open + end + + def before_enter_closed + end + def before_exit_closed + end + def after_enter_closed + end + def after_exit_closed + end + + def before + end + def after + end +end + +describe Foo2, '- new callbacks' do + before(:each) do + @foo = Foo2.new + end + + it "should get close callbacks" do + @foo.should_receive(:before_exit_open).once.ordered # these should be before the state changes + @foo.should_receive(:before_enter_closed).once.ordered + @foo.should_receive(:before).once.ordered + @foo.should_receive(:aasm_write_state).once.ordered.and_return(true) # this is when the state changes + @foo.should_receive(:after_exit_open).once.ordered # these should be after the state changes + @foo.should_receive(:after_enter_closed).once.ordered + @foo.should_receive(:after).once.ordered + + @foo.close! + end + + it "should get open callbacks" do + @foo.close! + + @foo.should_receive(:before_exit_closed).once.ordered # these should be before the state changes + @foo.should_receive(:before_enter_open).once.ordered + @foo.should_receive(:before).once.ordered + @foo.should_receive(:aasm_write_state).once.ordered.and_return(true) # this is when the state changes + @foo.should_receive(:after_exit_closed).once.ordered # these should be after the state changes + @foo.should_receive(:after_enter_open).once.ordered + @foo.should_receive(:after).once.ordered + + @foo.open! + end +end