1
0
Fork 0
mirror of https://github.com/aasm/aasm synced 2023-03-27 23:22:41 -04:00
aasm/spec/unit/state_spec.rb
2008-02-21 12:18:08 -05:00

69 lines
1.7 KiB
Ruby

require File.join(File.dirname(__FILE__), '..', 'spec_helper')
# TODO These are specs ported from original aasm
describe AASM::SupportingClasses::State do
before(:each) do
@name = :astate
@options = {}
@record = mock('record')
end
def new_state
@state = AASM::SupportingClasses::State.new(@name, @options)
end
it 'should set the name' do
new_state
@state.name.should == :astate
end
it '#entering should not run_transition_action if :enter option is not passed' do
new_state
@record.should_not_receive(:run_transition_action)
@state.entering(@record)
end
it '#entered should not run_transition_action if :after option is not passed' do
new_state
@record.should_not_receive(:run_transition_action)
@state.entered(@record)
end
it '#exited should not run_transition_action if :exit option is not passed' do
new_state
@record.should_not_receive(:run_transition_action)
@state.exited(@record)
end
it '#entering should run_transition_action when :enter option is passed' do
@options[:enter] = true
new_state
@record.should_receive(:run_transition_action).with(true)
@state.entering(@record)
end
it '#entered should run_transition_action for each option when :after option is passed' do
@options[:after] = ['a', 'b']
new_state
@record.should_receive(:run_transition_action).once.with('a')
@record.should_receive(:run_transition_action).once.with('b')
@state.entered(@record)
end
it '#exited should run_transition_action when :exit option is passed' do
@options[:exit] = true
new_state
@record.should_receive(:run_transition_action).with(true)
@state.exited(@record)
end
end