"""maxwell_record logic tests.""" import pytest from src.constants import maxwell from src.constants import sql from src.logic import maxwell_record from tests.consts import common @pytest.fixture def maxwell_input_single_table(): """Fixture for creating sample maxwell input data for single table.""" return { common.ENCODING_QUEUE_DETAIL: [ { maxwell.MAXWELL_TABLE: common.ENCODING_QUEUE_DETAIL, maxwell.MAXWELL_TYPE: maxwell.TYPE_INSERT, maxwell.MAXWELL_TIMESTAMP: 1736236006, maxwell.MAXWELL_DATA: { common.DATA_FIELD: 0 } }, { maxwell.MAXWELL_TABLE: common.ENCODING_QUEUE_DETAIL, maxwell.MAXWELL_TYPE: maxwell.TYPE_UPDATE, maxwell.MAXWELL_TIMESTAMP: 1736236006, maxwell.MAXWELL_DATA: { common.DATA_FIELD: 1 } }, { maxwell.MAXWELL_TABLE: common.ENCODING_QUEUE_DETAIL, maxwell.MAXWELL_TYPE: maxwell.TYPE_DELETE, maxwell.MAXWELL_TIMESTAMP: 1736236006, maxwell.MAXWELL_DATA: { common.DATA_FIELD: 2 } } ] } @pytest.fixture def maxwell_input_multiple_table(maxwell_input_single_table): """Fixture for creating sample maxwell input data for multiple tables.""" return { **maxwell_input_single_table, common.ENCODING_QUEUE: [ { maxwell.MAXWELL_TABLE: common.ENCODING_QUEUE, maxwell.MAXWELL_TYPE: maxwell.TYPE_INSERT, maxwell.MAXWELL_TIMESTAMP: 1736236006, maxwell.MAXWELL_DATA: { common.DATA_FIELD: 3 } }, { maxwell.MAXWELL_TABLE: common.ENCODING_QUEUE, maxwell.MAXWELL_TYPE: maxwell.TYPE_UPDATE, maxwell.MAXWELL_TIMESTAMP: 1736236006, maxwell.MAXWELL_DATA: { common.DATA_FIELD: 4 } }, { maxwell.MAXWELL_TABLE: common.ENCODING_QUEUE, maxwell.MAXWELL_TYPE: maxwell.TYPE_DELETE, maxwell.MAXWELL_TIMESTAMP: 1736236006, maxwell.MAXWELL_DATA: { common.DATA_FIELD: 5 } } ] } def test_log_records_single_table(mocker, maxwell_input_single_table): """Test log_records function for a single table.""" mock_bulk_insert = mocker.patch('src.logic.maxwell_record.bulk_insert') maxwell_record.log_records(maxwell_input_single_table) expected_table_name = 'encoding_queue_detail_log' expected_columns = [sql.LOG_TIMESTAMP, sql.LOG_ACTION, common.DATA_FIELD] expected_data = [ { sql.LOG_TIMESTAMP: '2025-01-07T07:46:46+00:00', sql.LOG_ACTION: maxwell.TYPE_INSERT, common.DATA_FIELD: 0 }, { sql.LOG_TIMESTAMP: '2025-01-07T07:46:46+00:00', sql.LOG_ACTION: maxwell.TYPE_UPDATE, common.DATA_FIELD: 1 }, { sql.LOG_TIMESTAMP: '2025-01-07T07:46:46+00:00', sql.LOG_ACTION: maxwell.TYPE_DELETE, common.DATA_FIELD: 2 } ] mock_bulk_insert.assert_called_once_with(expected_table_name, expected_columns, expected_data) def test_log_records_multiple_tables(mocker, maxwell_input_multiple_table): """Test log_records function multiple tables.""" mock_bulk_insert = mocker.patch('src.logic.maxwell_record.bulk_insert') maxwell_record.log_records(maxwell_input_multiple_table) expected_table_name = 'encoding_queue_detail_log' expected_columns = [sql.LOG_TIMESTAMP, sql.LOG_ACTION, common.DATA_FIELD] expected_data = [ { sql.LOG_TIMESTAMP: '2025-01-07T07:46:46+00:00', sql.LOG_ACTION: maxwell.TYPE_INSERT, common.DATA_FIELD: 0 }, { sql.LOG_TIMESTAMP: '2025-01-07T07:46:46+00:00', sql.LOG_ACTION: maxwell.TYPE_UPDATE, common.DATA_FIELD: 1 }, { sql.LOG_TIMESTAMP: '2025-01-07T07:46:46+00:00', sql.LOG_ACTION: maxwell.TYPE_DELETE, common.DATA_FIELD: 2 } ] expected_table_name_1 = 'encoding_queue_log' expected_columns_1 = [sql.LOG_TIMESTAMP, sql.LOG_ACTION, common.DATA_FIELD] expected_data_1 = [ { sql.LOG_TIMESTAMP: '2025-01-07T07:46:46+00:00', sql.LOG_ACTION: maxwell.TYPE_INSERT, common.DATA_FIELD: 3 }, { sql.LOG_TIMESTAMP: '2025-01-07T07:46:46+00:00', sql.LOG_ACTION: maxwell.TYPE_UPDATE, common.DATA_FIELD: 4 }, { sql.LOG_TIMESTAMP: '2025-01-07T07:46:46+00:00', sql.LOG_ACTION: maxwell.TYPE_DELETE, common.DATA_FIELD: 5 } ] mock_bulk_insert.assert_any_call(expected_table_name, expected_columns, expected_data) mock_bulk_insert.assert_any_call(expected_table_name_1, expected_columns_1, expected_data_1)