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
|
## 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)
|
* 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
|
## 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)
|
* 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
|
end
|
||||||
|
|
||||||
class UndefinedState < RuntimeError; end
|
class UndefinedState < RuntimeError; end
|
||||||
|
class UndefinedEvent < UndefinedState; end
|
||||||
class NoDirectAssignmentError < RuntimeError; end
|
class NoDirectAssignmentError < RuntimeError; end
|
||||||
end
|
end
|
||||||
|
|
|
@ -134,10 +134,11 @@ module AASM
|
||||||
private
|
private
|
||||||
|
|
||||||
def event_exists?(event_name, bang = false)
|
def event_exists?(event_name, bang = false)
|
||||||
event = @instance.class.aasm(@name).state_machine.events[event_name]
|
event = @instance.class.aasm(@name).state_machine.events[event_name.to_sym]
|
||||||
event_error = bang ? "#{event_name}!" : event_name
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -153,11 +153,11 @@ describe 'callbacks for the new DSL' do
|
||||||
|
|
||||||
expect {
|
expect {
|
||||||
callback.aasm.fire(:unknown)
|
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 {
|
expect {
|
||||||
callback.aasm.fire!(:unknown)
|
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
|
end
|
||||||
|
|
||||||
it "does not run any state callback if the event guard fails" do
|
it "does not run any state callback if the event guard fails" do
|
||||||
|
|
|
@ -92,10 +92,10 @@ describe 'when being unsuspended' do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should raise AASM::UndefinedState when firing unknown events" do
|
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
|
end
|
||||||
|
|
||||||
it "should raise AASM::UndefinedState when firing unknown bang events" do
|
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
|
||||||
end
|
end
|
||||||
|
|
|
@ -296,16 +296,33 @@ describe 'current event' do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "when calling events with fire/fire!" do
|
describe "when calling events with fire/fire!" do
|
||||||
it "fire should populate aasm.current_event and transition (sleeping to showering)" do
|
context "fire" do
|
||||||
|
it "should populate aasm.current_event and transition (sleeping to showering)" do
|
||||||
pe.aasm.fire(:wakeup)
|
pe.aasm.fire(:wakeup)
|
||||||
expect(pe.aasm.current_event).to eq :wakeup
|
expect(pe.aasm.current_event).to eq :wakeup
|
||||||
expect(pe.aasm.current_state).to eq :showering
|
expect(pe.aasm.current_state).to eq :showering
|
||||||
end
|
end
|
||||||
it "fire! should populate aasm.current_event and transition (sleeping to showering)" do
|
|
||||||
|
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
|
||||||
|
|
||||||
|
context "fire!" do
|
||||||
|
it "should populate aasm.current_event and transition (sleeping to showering)" do
|
||||||
pe.aasm.fire!(:wakeup)
|
pe.aasm.fire!(:wakeup)
|
||||||
expect(pe.aasm.current_event).to eq :wakeup!
|
expect(pe.aasm.current_event).to eq :wakeup!
|
||||||
expect(pe.aasm.current_state).to eq :showering
|
expect(pe.aasm.current_state).to eq :showering
|
||||||
end
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue