mirror of
https://github.com/aasm/aasm
synced 2023-03-27 23:22:41 -04:00
Merge branch 'master' of github.com:aasm/aasm
This commit is contained in:
commit
4ec6229292
6 changed files with 37 additions and 15 deletions
|
@ -4,6 +4,9 @@
|
|||
## 5.3.1
|
||||
* Fix fire! with string argument [#787](https://github.com/aasm/aasm/issues/787), in PR[#788](https://github.com/aasm/aasm/pull/788) thanks to [norman](https://github.com/norman)
|
||||
|
||||
* Allow `fire` and `fire!` to accept a String or Symbol for the event name, and raise AASM::UndefinedEvent rather than AASM::UndefinedState
|
||||
when an event can not be found, thanks to [norman](https://github.com/norman).
|
||||
|
||||
## 5.3.0
|
||||
|
||||
* Add Ruby 3.1 and Rails 7 to the CI matrix [#775](https://github.com/aasm/aasm/pull/775), thanks to [petergoldstein](https://github.com/petergoldstein)
|
||||
|
|
|
@ -17,5 +17,6 @@ module AASM
|
|||
end
|
||||
|
||||
class UndefinedState < RuntimeError; end
|
||||
class UndefinedEvent < UndefinedState; end
|
||||
class NoDirectAssignmentError < RuntimeError; end
|
||||
end
|
||||
|
|
|
@ -134,10 +134,11 @@ module AASM
|
|||
private
|
||||
|
||||
def event_exists?(event_name, bang = false)
|
||||
event = @instance.class.aasm(@name).state_machine.events[event_name]
|
||||
event_error = bang ? "#{event_name}!" : event_name
|
||||
event = @instance.class.aasm(@name).state_machine.events[event_name.to_sym]
|
||||
return true if event
|
||||
|
||||
raise AASM::UndefinedState, "State :#{event_error} doesn't exist" if event.nil?
|
||||
event_error = bang ? "#{event_name}!" : event_name
|
||||
raise AASM::UndefinedEvent, "Event :#{event_error} doesn't exist" if event.nil?
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -153,11 +153,11 @@ describe 'callbacks for the new DSL' do
|
|||
|
||||
expect {
|
||||
callback.aasm.fire(:unknown)
|
||||
}.to raise_error(AASM::UndefinedState, "State :unknown doesn't exist")
|
||||
}.to raise_error(AASM::UndefinedEvent, "Event :unknown doesn't exist")
|
||||
|
||||
expect {
|
||||
callback.aasm.fire!(:unknown)
|
||||
}.to raise_error(AASM::UndefinedState, "State :unknown! doesn't exist")
|
||||
}.to raise_error(AASM::UndefinedEvent, "Event :unknown! doesn't exist")
|
||||
end
|
||||
|
||||
it "does not run any state callback if the event guard fails" do
|
||||
|
|
|
@ -92,10 +92,10 @@ describe 'when being unsuspended' do
|
|||
end
|
||||
|
||||
it "should raise AASM::UndefinedState when firing unknown events" do
|
||||
expect { auth.aasm.fire(:unknown) }.to raise_error(AASM::UndefinedState, "State :unknown doesn't exist")
|
||||
expect { auth.aasm.fire(:unknown) }.to raise_error(AASM::UndefinedEvent, "Event :unknown doesn't exist")
|
||||
end
|
||||
|
||||
it "should raise AASM::UndefinedState when firing unknown bang events" do
|
||||
expect { auth.aasm.fire!(:unknown) }.to raise_error(AASM::UndefinedState, "State :unknown! doesn't exist")
|
||||
expect { auth.aasm.fire!(:unknown) }.to raise_error(AASM::UndefinedEvent, "Event :unknown! doesn't exist")
|
||||
end
|
||||
end
|
||||
|
|
|
@ -296,15 +296,32 @@ describe 'current event' do
|
|||
end
|
||||
|
||||
describe "when calling events with fire/fire!" do
|
||||
it "fire should populate aasm.current_event and transition (sleeping to showering)" do
|
||||
pe.aasm.fire(:wakeup)
|
||||
expect(pe.aasm.current_event).to eq :wakeup
|
||||
expect(pe.aasm.current_state).to eq :showering
|
||||
context "fire" do
|
||||
it "should populate aasm.current_event and transition (sleeping to showering)" do
|
||||
pe.aasm.fire(:wakeup)
|
||||
expect(pe.aasm.current_event).to eq :wakeup
|
||||
expect(pe.aasm.current_state).to eq :showering
|
||||
end
|
||||
|
||||
it "should allow event names as strings" do
|
||||
pe.aasm.fire("wakeup")
|
||||
expect(pe.aasm.current_event).to eq :wakeup
|
||||
expect(pe.aasm.current_state).to eq :showering
|
||||
end
|
||||
end
|
||||
it "fire! should populate aasm.current_event and transition (sleeping to showering)" do
|
||||
pe.aasm.fire!(:wakeup)
|
||||
expect(pe.aasm.current_event).to eq :wakeup!
|
||||
expect(pe.aasm.current_state).to eq :showering
|
||||
|
||||
context "fire!" do
|
||||
it "should populate aasm.current_event and transition (sleeping to showering)" do
|
||||
pe.aasm.fire!(:wakeup)
|
||||
expect(pe.aasm.current_event).to eq :wakeup!
|
||||
expect(pe.aasm.current_state).to eq :showering
|
||||
end
|
||||
|
||||
it "should allow event names as strings" do
|
||||
pe.aasm.fire!("wakeup")
|
||||
expect(pe.aasm.current_event).to eq :wakeup!
|
||||
expect(pe.aasm.current_state).to eq :showering
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue