1
0
Fork 0
mirror of https://github.com/aasm/aasm synced 2023-03-27 23:22:41 -04:00
aasm/spec/unit/simple_example_spec.rb
Dāvis Namsons f7231d1c31 Feature: Add permitted_transitions to group permitted event with state (#664)
* Feature: Add permitted_transitions to group permitted event with state

resolves #656
2020-02-08 18:19:30 +05:30

57 lines
1.8 KiB
Ruby

require 'spec_helper'
describe 'state machine' do
let(:simple) { SimpleExample.new }
it 'starts with an initial state' do
expect(simple.aasm.current_state).to eq(:initialised)
expect(simple).to respond_to(:initialised?)
expect(simple).to be_initialised
end
it 'allows transitions to other states' do
expect(simple).to respond_to(:fill_out)
expect(simple).to respond_to(:fill_out!)
simple.fill_out!
expect(simple).to respond_to(:filled_out?)
expect(simple).to be_filled_out
expect(simple).to respond_to(:authorise)
expect(simple).to respond_to(:authorise!)
simple.authorise
expect(simple).to respond_to(:authorised?)
expect(simple).to be_authorised
end
it 'shows the permitted transitions' do
expect(simple.aasm.permitted_transitions).to eq(
[
{ event: :fill_out, state: :filled_out },
{ event: :deny, state: :denied }
]
)
simple.fill_out!
expect(simple.aasm.permitted_transitions).to eq([{ event: :authorise, state: :authorised }])
simple.authorise
expect(simple.aasm.permitted_transitions).to eq([])
end
it 'denies transitions to other states' do
expect {simple.authorise}.to raise_error(AASM::InvalidTransition)
expect {simple.authorise!}.to raise_error(AASM::InvalidTransition)
simple.fill_out
expect {simple.fill_out}.to raise_error(AASM::InvalidTransition)
expect {simple.fill_out!}.to raise_error(AASM::InvalidTransition)
simple.authorise
expect {simple.fill_out}.to raise_error(AASM::InvalidTransition)
expect {simple.fill_out!}.to raise_error(AASM::InvalidTransition)
end
it 'defines constants for each state name' do
expect(SimpleExample::STATE_INITIALISED).to eq(:initialised)
expect(SimpleExample::STATE_FILLED_OUT).to eq(:filled_out)
expect(SimpleExample::STATE_AUTHORISED).to eq(:authorised)
end
end