Method: StateMachines::TestHelper#assert_sm_all_sync

Defined in:
lib/state_machines/test_helper.rb

#assert_sm_all_sync(object, message = nil) ⇒ void

This method returns an undefined value.

Assert that an object has no async-enabled state machines

Examples:

sync_only_vehicle = Vehicle.new  # All machines are sync-only
assert_sm_all_sync(sync_only_vehicle)

Parameters:

  • object (Object)

    The object with state machines

  • message (String, nil) (defaults to: nil)

    Custom failure message

Raises:

  • (AssertionError)

    If any machine has async mode enabled

Since:

  • 0.10.0



528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
# File 'lib/state_machines/test_helper.rb', line 528

def assert_sm_all_sync(object, message = nil)
  async_machines = []

  object.class.state_machines.each do |name, machine|
    if machine.respond_to?(:async_mode_enabled?) && machine.async_mode_enabled?
      async_machines << name
    end
  end

  default_message = "Expected all state machines to be sync-only, but these have async enabled: #{async_machines.inspect}"

  if defined?(::Minitest)
    assert_empty async_machines, message || default_message
  elsif defined?(::RSpec)
    expect(async_machines).to be_empty, message || default_message
  elsif async_machines.any?
    raise default_message
  end
end