mirror of
https://github.com/aasm/aasm
synced 2023-03-27 23:22:41 -04:00
77 lines
1.8 KiB
Ruby
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
|