37 lines
1023 B
Python
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]
|