Module: TCB::MinitestHelpers

Includes:
TestHelpers::Shared
Defined in:
lib/tcb/minitest_helpers.rb

Instance Method Summary collapse

Methods included from TestHelpers::Shared

#poll_until, #with_subscriptions

Instance Method Details

#assert_published(*expected, within: 1.0, &block) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/tcb/minitest_helpers.rb', line 9

def assert_published(*expected, within: 1.0, &block)
  event_classes = expected.map { |arg| arg.is_a?(Class) ? arg : arg.class }.uniq

  with_subscriptions(*event_classes) do |captured|
    block.call

    expected.each do |arg|
      if arg.is_a?(Class)
        met = poll_until(within: within) { captured[arg].any? }
        raise Minitest::Assertion, "Expected #{arg} to be published, but it was not" unless met
      else
        event_class = arg.class
        met = poll_until(within: within) { captured[event_class].any? { |e| e == arg } }
        raise Minitest::Assertion, "Expected #{arg.inspect} to be published, but it was not" unless met
      end
    end
  end
end

#poll_assert(message = nil, within: 1.0, interval: 0.001, &block) ⇒ Object

Raises:

  • (Minitest::Assertion)


28
29
30
31
32
33
34
35
# File 'lib/tcb/minitest_helpers.rb', line 28

def poll_assert(message = nil, within: 1.0, interval: 0.001, &block)
  met = poll_until(within: within, interval: interval, &block)
  return if met

  failure_message = "Condition not met within #{within}s"
  failure_message += ": \"#{message}\"" if message
  raise Minitest::Assertion, failure_message
end