"""Unit tests for snowflake_snapshot_mechanical_transaction_details_task.""" from unittest.mock import patch from lib import config from lib.constants import ALBUM, TRACK from tasks.accounting_period_mechanicals.snowflake_snapshot_mech_txn_details import \ snowflake_snapshot_mechanical_transaction_details_task import_path = 'tasks.accounting_period_mechanicals.snowflake_snapshot_mech_txn_details' @patch(f'{import_path}.RoyaltySnowflakeHook') @patch(f'{import_path}.shared_helpers') @patch(f'{import_path}.helpers') @patch(f'{import_path}.templates') def test_snowflake_snapshot_mech_txn_details_by_album_success( mock_templates, mock_helpers, mock_shared_helpers, mock_hook, mock_accounting_period_mechanicals_event, mock_accounting_period_mechanicals_dag_run ): """Test task that snapshots mechanical transaction details by album (UPC).""" accounting_period_id = mock_accounting_period_mechanicals_event['target_id'] sales_file_ids = [4, 5, 6] mock_helpers.get_event_from_params.return_value.target_id = accounting_period_id mock_shared_helpers.get_sales_file_ids.return_value = sales_file_ids mock_templates.insert_snapshot_mechanical_transaction_details_by_upc.return_value \ .render.return_value = \ 'CALCULATE ALBUM-LEVEL MECH AND INSERT INTO SNAPSHOT_MECHANICAL_TRANSACTION_DETAIL' # noqa E501 mock_hook.return_value.run.return_value = True snowflake_snapshot_mechanical_transaction_details_task( mock_accounting_period_mechanicals_dag_run, ALBUM ) mock_helpers.get_event_from_params.assert_called_once_with( mock_accounting_period_mechanicals_dag_run ) mock_shared_helpers.get_sales_file_ids.assert_called_once_with(accounting_period_id) mock_hook.assert_called_once_with(snowflake_conn_id=config.SNOWFLAKE_CONN_NAME) mock_templates.insert_snapshot_mechanical_transaction_details_by_upc \ .return_value.render.assert_called_once_with( sales_file_ids=sales_file_ids, schema=config.OWS_ENV ) mock_templates.insert_snapshot_mechanical_transaction_details_by_isrc \ .return_value.render.assert_not_called() @patch(f'{import_path}.RoyaltySnowflakeHook') @patch(f'{import_path}.shared_helpers') @patch(f'{import_path}.helpers') @patch(f'{import_path}.templates') def test_snowflake_snapshot_mech_txn_details_by_track_success( mock_templates, mock_helpers, mock_shared_helpers, mock_hook, mock_accounting_period_mechanicals_event, mock_accounting_period_mechanicals_dag_run ): """Test task that snapshots mechanical transaction details by track (ISRC).""" accounting_period_id = mock_accounting_period_mechanicals_event['target_id'] sales_file_ids = [4, 5, 6] mock_helpers.get_event_from_params.return_value.target_id = accounting_period_id mock_shared_helpers.get_sales_file_ids.return_value = sales_file_ids mock_templates.insert_snapshot_mechanical_transaction_details_by_isrc.return_value \ .render.return_value = \ 'CALCULATE TRACK-LEVEL MECH AND INSERT INTO SNAPSHOT_MECHANICAL_TRANSACTION_DETAIL' # noqa E501 mock_hook.return_value.run.return_value = True snowflake_snapshot_mechanical_transaction_details_task( mock_accounting_period_mechanicals_dag_run, TRACK ) mock_helpers.get_event_from_params.assert_called_once_with( mock_accounting_period_mechanicals_dag_run ) mock_shared_helpers.get_sales_file_ids.assert_called_once_with(accounting_period_id) mock_hook.assert_called_once_with(snowflake_conn_id=config.SNOWFLAKE_CONN_NAME) mock_templates.insert_snapshot_mechanical_transaction_details_by_isrc \ .return_value.render.assert_called_once_with( sales_file_ids=sales_file_ids, schema=config.OWS_ENV ) mock_templates.insert_snapshot_mechanical_transaction_details_by_upc \ .return_value.render.assert_not_called()