pyinfra/pyinfra/test/unit_tests/consumer_test.py
2022-03-10 14:43:19 +01:00

37 lines
1023 B
Python

import pytest
from pyinfra.pyampq.consumer import Consumer
@pytest.fixture
def consumer(queue_manager, callback):
return Consumer(callback, queue_manager)
@pytest.mark.parametrize("queue_manager_name", ["mock", "pika"], scope="session")
class TestConsumer:
def test_consuming_empty_input_queue_does_not_put_anything_on_output_queue(self, consumer, queue_manager):
queue_manager.clear()
consumer.consume()
assert queue_manager.output_queue.empty()
def test_consuming_nonempty_input_queue_puts_messages_on_output_queue_in_fifo_order(
self, consumer, queue_manager, callback
):
def produce_items():
return range(3)
queue_manager.clear()
for item in produce_items():
queue_manager.publish_request(item)
requests = consumer.consume()
for _, r in zip(produce_items(), requests):
queue_manager.publish_response(r, callback)
assert queue_manager.output_queue.to_list() == [0, 1, 4]