1
0
Fork 0
mirror of https://github.com/aasm/aasm synced 2023-03-27 23:22:41 -04:00

Add aliases for event methods

Addresses #469
This commit is contained in:
Aryk Grosz 2017-06-13 16:20:25 -07:00 committed by Anil Kumar Maurya
parent f950de009d
commit 5fbc423a53
3 changed files with 44 additions and 0 deletions

View file

@ -130,6 +130,14 @@ module AASM
aasm(aasm_name).current_event = event
aasm_fire_event(aasm_name, event, {:persist => false}, *args, &block)
end
# Create aliases for the event methods. Keep the old names to maintain backwards compatibility.
if namespace?
klass.send(:alias_method, "may_#{name}_#{namespace}?", "may_#{name}?")
klass.send(:alias_method, "#{name}_#{namespace}!", "#{name}!")
klass.send(:alias_method, "#{name}_#{namespace}", name)
end
end
def after_all_transitions(*callbacks, &block)

View file

@ -25,4 +25,18 @@ class NamespacedMultipleExample
transitions :from => :approved, :to => :unapproved
end
end
# Test namespace event methods with suffix (ie may_sell_car?, sell_car!)
aasm(:car, namespace: :car) do
state :unsold, :initial => true
state :sold
event :sell do
transitions :from => :unsold, :to => :sold
end
event :return do
transitions :from => :sold, :to => :unsold
end
end
end

View file

@ -11,6 +11,10 @@ describe 'state machine' do
expect(namespaced.aasm(:review_status).current_state).to eq(:unapproved)
expect(namespaced).to respond_to(:review_unapproved?)
expect(namespaced).to be_review_unapproved
expect(namespaced.aasm(:car).current_state).to eq(:unsold)
expect(namespaced).to respond_to(:car_unsold?)
expect(namespaced).to be_car_unsold
end
it 'allows transitions to other states' do
@ -25,6 +29,12 @@ describe 'state machine' do
namespaced.approve_review!
expect(namespaced).to respond_to(:review_approved?)
expect(namespaced).to be_review_approved
expect(namespaced).to respond_to(:sell_car)
expect(namespaced).to respond_to(:sell_car!)
namespaced.sell_car!
expect(namespaced).to respond_to(:car_sold?)
expect(namespaced).to be_car_sold
end
it 'denies transitions to other states' do
@ -41,6 +51,13 @@ describe 'state machine' do
expect {namespaced.approve_review}.to raise_error(AASM::InvalidTransition)
expect {namespaced.approve_review!}.to raise_error(AASM::InvalidTransition)
namespaced.unapprove_review
expect {namespaced.return_car}.to raise_error(AASM::InvalidTransition)
expect {namespaced.return_car!}.to raise_error(AASM::InvalidTransition)
namespaced.sell_car
expect {namespaced.sell_car}.to raise_error(AASM::InvalidTransition)
expect {namespaced.sell_car!}.to raise_error(AASM::InvalidTransition)
namespaced.return_car
end
it 'defines constants for each state name' do
@ -49,5 +66,10 @@ describe 'state machine' do
expect(NamespacedMultipleExample::STATE_REVIEW_UNAPPROVED).to eq(:unapproved)
expect(NamespacedMultipleExample::STATE_REVIEW_APPROVED).to eq(:approved)
expect(NamespacedMultipleExample::STATE_CAR_UNSOLD).to eq(:unsold)
expect(NamespacedMultipleExample::STATE_CAR_SOLD).to eq(:sold)
end
end