diff --git a/pyinfra/test/queue_manager_mock.py b/pyinfra/test/queue_manager_mock.py index ae2fedf..a234dbd 100644 --- a/pyinfra/test/queue_manager_mock.py +++ b/pyinfra/test/queue_manager_mock.py @@ -16,17 +16,19 @@ class QueueManagerMock(QueueManager): def publish_request(self, request): self._input_queue.append(request) - def publish_response(self, response): - self._output_queue.append(response) + def publish_response(self, message, callback): + self._output_queue.append(callback(message)) def pull_request(self): - return self._input_queue.pop() + return self._input_queue.popleft() - def consume(self, callback): + def consume(self): while self._input_queue: - request = self._input_queue.popleft() - response = callback(request) - self._output_queue.append(response) + yield self.pull_request() + + def consume_and_publish(self, callback): + for message in self.consume(): + self.publish_response(message, callback) def clear(self): self._input_queue.clear() diff --git a/pyinfra/test/unit_tests/consumer_test.py b/pyinfra/test/unit_tests/consumer_test.py index 6c9d344..547137e 100644 --- a/pyinfra/test/unit_tests/consumer_test.py +++ b/pyinfra/test/unit_tests/consumer_test.py @@ -13,7 +13,7 @@ def callback(): @pytest.fixture(scope="session") def queue_manager() -> QueueManager: - # return QueueManagerMock("input", "output") + return QueueManagerMock("input", "output") return PikaQueueManager("input", "output") @@ -22,10 +22,10 @@ def consumer(queue_manager, callback): return Consumer(callback, queue_manager) -# def test_consuming_empty_input_queue_does_not_put_anything_on_output_queue(consumer, queue_manager): -# queue_manager.clear() -# consumer.consume() -# assert queue_manager.output_queue.empty() +def test_consuming_empty_input_queue_does_not_put_anything_on_output_queue(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(consumer, queue_manager, callback):