in spec/support/event_collector.rb [98:143]
def wait_for(timeout: 5, **expected)
if expected.empty? && !block_given?
raise ArgumentError, 'Either args or block required'
end
Timeout.timeout(timeout) do
loop do
sleep 0.01
missing = expected.reduce(0) do |total, (kind, count)|
total + (count - send(kind).length)
end
next if missing > 0
unless missing == 0
if missing < 0
puts format(
'Expected %s. Got %s',
expected,
"#{missing.abs} extra"
)
else
puts format(
'Expected %s. Got %s',
expected,
"missing #{missing}"
)
print_received
end
end
if block_given?
next unless yield(self)
end
break true
end
end
rescue Timeout::Error
puts format('Died waiting for %s', block_given? ? 'block' : expected)
puts '--- Received: ---'
print_received
raise
end