ash_state_machine/lib/errors/no_matching_event.ex

25 lines
844 B
Elixir

defmodule AshStateMachine.Errors.NoMatchingTransition do
@moduledoc "Used when a state change occurs in an action with no matching transition"
use Splode.Error,
fields: [:action, :target, :old_state],
class: :invalid
def message(error) do
cond do
error.old_state && error.target ->
"""
Attempted to change state from #{error.old_state} to #{error.target} in action #{error.action}, but no matching transition was configured.
"""
error.old_state ->
"""
Attempted to change state from #{error.old_state} in action #{error.action}, but no matching transition was configured.
"""
error.target ->
"""
Attempted to change state to #{error.target} in action #{error.action}, but no matching transition was configured.
"""
end
end
end