"""Pytest fixtures.""" import itertools from unittest.mock import MagicMock from unittest.mock import patch from pytest import fixture import simplejson as json KAFKA_MESSAGE_JSON = { 'data': { 'artist_id': 123, 'artist_name': 'test_artist', 'vendor_id': 234 }, 'table': 'test_table', 'database': 'test_db' } KAFKA_MESSAGE_HEADERS = { 'exception.class.name': b'TestExceptionClassName', 'exception.message': b'test_exception_message' } @fixture def mock_kafka_message(): """Mock kafka record received from the topic.""" mock_record = MagicMock() mock_record.value.decode.return_value = json.dumps( KAFKA_MESSAGE_JSON).encode('utf-8') mock_record.headers = KAFKA_MESSAGE_HEADERS return mock_record @fixture def mock_kafka_consumer(mock_kafka_message): """Mock kafka consumer ckass.""" with patch('neo4j_sync_dlq.logic.kafka.KafkaConsumer') as consumer: consumer_mock = MagicMock() consumer_mock.poll.side_effect = itertools.chain( [{'some_id': [mock_kafka_message]}], itertools.repeat({})) consumer.return_value = consumer_mock yield consumer