1
0
Fork 0
mirror of https://github.com/aasm/aasm synced 2023-03-27 23:22:41 -04:00
aasm/spec/aasm_spec.rb
2008-01-08 09:39:00 -05:00

77 lines
1.8 KiB
Ruby

require File.join(File.dirname(__FILE__), '..', 'lib', 'aasm')
require File.join(File.dirname(__FILE__), '..', 'lib', 'state')
require File.join(File.dirname(__FILE__), '..', 'lib', 'state_factory')
class Foo
include AASM
initial_state :open
state :open
state :closed
event :close do
end
end
class Bar
include AASM
state :read
state :ended
end
describe AASM, '- class level definitions' do
it 'should define a class level initial_state() method on its including class' do
Foo.should respond_to(:initial_state)
end
it 'should define a class level state() method on its including class' do
Foo.should respond_to(:state)
end
it 'should define a class level event() method on its including class' do
Foo.should respond_to(:event)
end
end
describe AASM, '- instance level definitions' do
before(:each) do
@foo = Foo.new
end
it 'should define a state querying instance method on including class' do
@foo.should respond_to(:open?)
end
it 'should define an event! inance method' do
@foo.should respond_to(:close!)
end
# TODO This isn't necessarily "in play" just yet
#it 'using the state macro should create a new State object' do
# AASM::SupportingClasses::State.should_receive(:new).with(:open, {})
# Foo.state :open
#end
end
describe AASM, '- initial states' do
before(:each) do
@foo = Foo.new
@bar = Bar.new
end
it 'should set the initial state' do
@foo.aasm_current_state.should == :open
end
it '#open? should be initially true' do
@foo.open?.should be_true
end
it '#closed? should be initially false' do
@foo.closed?.should be_false
end
it 'should use the first state defined if no initial state is given' do
@bar.aasm_current_state.should == :read
end
end