"""Tests for AWA flow.""" from unittest import mock from unittest.mock import MagicMock from feed_ingestion.flows.awa.flow import Flow def test_flow_decider_bootstrap_stop(): """Test normal decider execution.""" juke_flow = Flow() schedule = MagicMock() schedule_result_object = MagicMock() schedule_result_object.result = { 'bootstrap.stop': True, } schedule.return_value = schedule_result_object juke_flow.decider(schedule) schedule.assert_has_calls([ mock.call('bootstrap', mock.ANY), ]) def test_flow_decider_grab_drop_files_stop(): """Test normal decider execution.""" juke_flow = Flow() schedule = MagicMock() schedule_result_object = MagicMock() schedule_result_object.result = { 'bootstrap.licensor': 'theorchard', 'grab_drop_files.stop': True, } schedule.return_value = schedule_result_object juke_flow.decider(schedule) schedule.assert_has_calls([ mock.call('bootstrap', mock.ANY), mock.call('grab_drop_files', mock.ANY, requires=[mock.ANY]), ]) def test_flow_decider_theorchard(): """Test normal decider execution.""" juke_flow = Flow() schedule = MagicMock() schedule_result_object = MagicMock() schedule_result_object.result = { 'bootstrap.licensor': 'theorchard', 'bootstrap.stop_after_staging_raw': False, } schedule.return_value = schedule_result_object juke_flow.decider(schedule) schedule.assert_has_calls([ mock.call('bootstrap', mock.ANY), mock.call('grab_drop_files', mock.ANY, requires=[mock.ANY]), mock.call('set_status_to_downloaded', 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( 'mark_staging_raw_table_tasks_complete', mock.ANY, requires=[mock.ANY]), mock.call( 'set_status_populated_raw_table', mock.ANY, requires=[ mock.ANY]), mock.call( 'create_temp_staging_fact_table', mock.ANY, requires=[ mock.ANY]), mock.call( 'load_temp_staging_fact_table', mock.ANY, requires=[ mock.ANY]), mock.call('load_staging_fact', mock.ANY, requires=[mock.ANY]), mock.call('load_fact_table', mock.ANY, requires=[mock.ANY]), mock.call('set_overall_status_ingested', mock.ANY, requires=[mock.ANY]), mock.call('drop_temp_staging_raw_table', mock.ANY, requires=[mock.ANY]), ]) def test_flow_decider_smej(): """Test normal decider execution.""" flow = Flow() schedule = MagicMock() schedule_result_object = MagicMock() schedule_result_object.result = { 'bootstrap.licensor': 'smej', 'bootstrap.stop_after_staging_raw': 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]), mock.call('set_status_to_downloaded', 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( 'mark_staging_raw_table_tasks_complete', mock.ANY, requires=[mock.ANY]), mock.call( 'set_status_populated_raw_table', mock.ANY, requires=[mock.ANY]), mock.call( 'drop_temp_staging_raw_table', mock.ANY, requires=[mock.ANY]), ])