"""Tests for dms_delivery_spec model.""" import pytest from src.constants import fields from src.models import dms_delivery_spec from tests.test_utils import db @pytest.mark.parametrize( 'input_order_types_store_ids, db_query_result_mock, ' 'expected_query, expected_result', ( ( (), ((),), '', {}, ), ( (('release', 1), ('track', 286)), ( ( (fields.ORDER_TYPE, 'release'), (fields.DMS_MASTER_MASTER_ID, 1), (fields.DELIVERY, 'N'), (fields.ENCODING, 'Y'), ), ( (fields.ORDER_TYPE, 'track'), (fields.DMS_MASTER_MASTER_ID, 286), (fields.DELIVERY, 'Y'), (fields.ENCODING, 'N'), ), ), """SELECT encoding, delivery, dms_master_master_id, order_type FROM dms_delivery_spec WHERE (dms_master_master_id = 1 AND order_type = 'release') OR (dms_master_master_id = 286 AND order_type = 'track')""", { ('release', 1): {fields.DELIVERY: 'N', fields.ENCODING: 'Y'}, ('track', 286): {fields.DELIVERY: 'Y', fields.ENCODING: 'N'}, }, ), ( (('release', 1),), ( ( (fields.ORDER_TYPE, 'release'), (fields.DMS_MASTER_MASTER_ID, 1), (fields.DELIVERY, 'N'), (fields.ENCODING, 'Y'), ), ), """SELECT encoding, delivery, dms_master_master_id, order_type FROM dms_delivery_spec WHERE (dms_master_master_id = 1 AND order_type = 'release')""", { ('release', 1): {fields.DELIVERY: 'N', fields.ENCODING: 'Y'}, }, ), )) def test_get_dms_delivery_spec_bulk( input_order_types_store_ids, db_query_result_mock, expected_query, expected_result, patch_session): """Test bulk queries for dms_delivery_spec records.""" mocked_session = patch_session( 'dms_delivery_spec', 'direct_delivery', db_query_result_mock) mocked_execute = mocked_session.execute result = dms_delivery_spec.get_dms_delivery_spec_bulk( input_order_types_store_ids) assert result == expected_result if not input_order_types_store_ids: assert mocked_execute.call_count == 0 return assert mocked_execute.call_count == 1 expected_query_text = db.remove_repeating_spaces(expected_query) actual_query_text = db.remove_repeating_spaces( mocked_execute.call_args[0][0]) assert actual_query_text == expected_query_text