"""Unit tests for iTunes update_mapping_tasks.""" from unittest import mock from unittest.mock import MagicMock from unittest.mock import patch import pytest from feed_ingestion.flows.itunes import update_mapping_tasks @patch('feed_ingestion.flows.itunes.update_mapping_tasks.SnowflakeSQLExecutor') def test_update_apple_id_mapping_with_theorchard_licensor(executor_mock): """Test update_apple_id_mapping.""" execute_query_mock = MagicMock(return_value=None) executor_mock.get_connection.return_value = MagicMock() executor_mock.return_value.__enter__.\ return_value.execute_query = execute_query_mock sfdb_params = {'db': 'db', 'schema': 'schema'} query_names = [ '00_itunes_insert_new_entries', '01_update_vendor_offer_code', '02_update_vendor_identifier', '03_clean_blank_apple_release_id', '04_clean_blank_orchard_release_id', '05_clean_zero_apple_track_id', '06_clean_zero_orchard_track_id', '06_itunes_update_apple_release_track_id_from_upc_isrc', '07_update_apple_track_id', '08_update_apple_release_id', '09_update_apple_release_id_one_track', '10_update_apple_release_id_from_upc', '11_update_apple_track_id_one_track', '12_update_orchard_track_id', '13_update_orchard_release_id', '13_itunes_update_album_level_apple_release_id', '13_itunes_update_album_level_orchard_release_id', '14_update_season_pass_orchard_release_track_id', '15_update_with_vendor_identifier_mapping', '16_update_ioda_video_mapping_case', '17_update_ioda_tv_mapping_case', '18_itunes_update_orchard_release_track_id_from_isrc', '19_update_orchard_release_id_from_manufacturer_upc_in_vid', '20_update_orchard_release_id_from_manufacturer_upc_in_upc' ] update_mapping_tasks.update_apple_id_mapping( MagicMock(), sfdb_params, '2020-01-01', 'theorchard', 'iTunes') for query_name in query_names: print(query_name) execute_query_mock.assert_any_call(mock.ANY, query_name, mock.ANY) @patch('feed_ingestion.flows.itunes.update_mapping_tasks.SnowflakeSQLExecutor') def test_update_apple_id_mapping_with_sme_licensor(executor_mock): """Test update_apple_id_mapping.""" execute_query_mock = MagicMock(return_value=None) executor_mock.get_connection.return_value = MagicMock() executor_mock.return_value.__enter__.\ return_value.execute_query = execute_query_mock sfdb_params = {'db': 'db', 'schema': 'schema'} update_mapping_tasks.update_apple_id_mapping( MagicMock(), sfdb_params, '2020-01-01', 'sme', 'iTunes') execute_query_mock.assert_any_call( mock.ANY, '21_itunes_populate_sony_apple_id_mapping', mock.ANY) @pytest.fixture def mock_task_status(): """Yield task status.""" task_status_path = 'feed_ingestion.tasks.task_status' with patch(task_status_path) as task_status: task_status.is_completed_task.return_value = False task_status.mark_completed_task = MagicMock() yield task_status @patch('feed_ingestion.flows.itunes.update_mapping_tasks.SnowflakeSQLExecutor') def test_insert_new_zipcode_sme_licensor( executor_mock, mock_task_status): """Test insert_new_zipcode.""" execute_query_mock = MagicMock(return_value=None) executor_mock.get_connection.return_value = MagicMock() executor_mock.return_value.__enter__.\ return_value.execute_query = execute_query_mock sfdb_params = {'db': 'db', 'schema': 'schema'} update_mapping_tasks.insert_new_zipcode( MagicMock(), sfdb_params, '2020-01-01', 'itunes_sme', 'sme', 'iTunes') executor_mock.return_value.execute_query.assert_any_call( mock.ANY, 'insert_new_zipcodes', mock.ANY)