"""Shared test mocks.""" import json from unittest import mock from kafka_utils.consumer.source import mapping as kafka_source_mapping import pytest def load_file(filepath): """Load file.""" with open(filepath) as event_file: return event_file.read() def load_file_json(filepath): """Load json from file.""" return json.loads(load_file(filepath)) @pytest.fixture def mock_event(): """Mock event.""" return load_file_json('tests/sample_event.json') @pytest.fixture def mock_logger(mocker): """Mock logger.""" return mocker.patch('src.app.content_lambda_logger', autospec=True) @pytest.fixture def mock_event_source_message(mock_event): """Mock event source message.""" ((_, message),) = kafka_source_mapping.EventSourceMessage(mock_event) return message @pytest.fixture def mock_connectors(mocker): """Mock connectors.""" review_queue_item = { 'queueName': 'UNDER_INVESTIGATION', 'movedToQueueByIdentity': { 'id': '4587a877-d2c1-4c0e-b56a-e8cf3ac40840', 'firstName': 'Some', 'lastName': 'User', }, 'movedToTargetId': 1, 'movedToTargetName': 'Name', 'movedToTargetEmail': 'foo@bar.com', 'movedToTarget': { 'escalationType': 'some abc', 'targetGroup': { 'displayName': 'Test' } }, } expected_product_patch = [ mock.call({ 'product_id': 4195626, 'queue_name': 'under_investigation', 'moved_to_queue_by_user_id': 'ows-product-review-integration-tests', 'moved_to_queue_by_user_name': None }), mock.call({ 'product_id': 4195626, 'moved_to_queue_by_user_name': 'Some User', 'moved_to_target_email': 'foo@bar.com', 'moved_to_target_id': 'name', 'moved_to_target_name': 'Name', 'moved_to_group_name': 'Test', 'escalation_type': 'some abc', }) ] fetch_review_queue_item_data_mock = ( mocker.patch( 'src.connectors.get_graphql_connector', autospec=True, ).return_value .fetch_review_queue_item_data ) fetch_review_queue_item_data_mock.return_value = review_queue_item patch_product_mock_os = mocker.patch( 'src.connectors.get_os_connector', autospec=True, ).return_value.patch_product return fetch_review_queue_item_data_mock, patch_product_mock_os, \ expected_product_patch