in spec/support/mock_intake.rb [191:232]
def wait_for(timeout: 5, **expected)
if expected.empty? && !block_given?
raise ArgumentError, 'Either args or block required'
end
unless MockIntake.stubbed?
raise 'Not stubbed – did you forget :mock_intake?'
end
Timeout.timeout(timeout) do
loop do
sleep 0.01
missing = expected.reduce(0) do |total, (kind, count)|
total + (count - @mock_intake.send(kind).length)
end
next if missing > 0
unless missing == 0
puts format(
'Expected %s. Got %s',
expected,
missing
)
print_received
end
if block_given?
next unless yield(@mock_intake)
end
break true
end
end
rescue Timeout::Error
puts format('Died waiting for %s', block_given? ? 'block' : expected)
puts '--- Received: ---'
print_received
raise
end