"""Unit tests for iTunes Tickets Workflow.""" from unittest import mock from unittest.mock import MagicMock from feed_ingestion.flows.itunes_tickets.flow import Flow def test_decider(): """Test normal decider execution.""" schedule = MagicMock() flow = Flow() flow.decider(schedule) schedule.assert_has_calls([ mock.call('bootstrap', mock.ANY), mock.call().result.get('bootstrap.stop'), mock.call('grab_drop_files', mock.ANY, requires=[mock.ANY]), mock.call().result.get('grab_drop_files.stop'), mock.call('set_status_to_downloaded', mock.ANY, requires=[mock.ANY]), mock.call('process_drop_files', mock.ANY, requires=[mock.ANY]), mock.call( 'create_temp_staging_raw_table', mock.ANY, requires=[mock.ANY]), mock.call( 'load_temp_staging_raw_table', mock.ANY, requires=[mock.ANY]), mock.call('load_staging_raw_table', mock.ANY, requires=[mock.ANY]), mock.call('set_status_to_populated_raw_table', mock.ANY, requires=[mock.ANY]), mock.call('drop_temp_staging_table', mock.ANY, requires=[mock.ANY]), mock.call('set_status_to_ingested', mock.ANY, requires=[mock.ANY]) ]) def test_decider_when_grab_drop_files_fails(): """Test decider execution when grab_drop_files returns stop.""" schedule = MagicMock() flow = Flow() schedule_result_object = MagicMock() schedule_result_object.result = { 'grab_drop_files.stop': True, } schedule.return_value = schedule_result_object flow.decider(schedule) schedule.assert_has_calls([ mock.call('bootstrap', mock.ANY), mock.call('grab_drop_files', mock.ANY, requires=[mock.ANY]), ])