Sha256: 3697b36a84d4ff6a3d0c3e23e4bb8ad364e570be1138cb9c070effd441c2ae27
Contents?: true
Size: 1.46 KB
Versions: 3
Compression:
Stored size: 1.46 KB
Contents
# frozen_string_literal: true class FailHandlingStateMachine class Error < StandardError; end class RunError < StandardError; end include SimplyFSM state_machine :activity, fail: :on_any_fail do state :sleeping, initial: true state :running state :cleaning event :sleep, transition: { from: %i[running cleaning], to: :sleeping } event :clean, transition: { from: :running, to: :cleaning } event :run, fail: ->(_event) { raise RunError, "Cannot run" }, transition: { from: :sleeping, to: :running } end def on_any_fail(event_name) raise Error, "Cannot do: #{event_name}" end end RSpec.describe FailHandlingStateMachine do describe "#sleep" do it "error if already sleeping" do expect { subject.sleep }.to raise_error(FailHandlingStateMachine::Error) end end describe "#run" do it "custom error if already running" do subject.run expect { subject.run }.to raise_error(FailHandlingStateMachine::RunError) end it "custom error if cleaning" do subject.run subject.clean expect { subject.run }.to raise_error(FailHandlingStateMachine::RunError) end end describe "#clean" do it "error if sleeping" do expect { subject.clean }.to raise_error(FailHandlingStateMachine::Error) end it "error if already cleaning" do subject.run subject.clean expect { subject.clean }.to raise_error(FailHandlingStateMachine::Error) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
simply_fsm-0.1.2 | spec/unit/fail_events_spec.rb |
simply_fsm-0.1.1 | spec/unit/fail_events_spec.rb |
simply_fsm-0.1.0 | spec/unit/fail_events_spec.rb |