"""Tests for the Peloton flow.""" from unittest import mock from unittest.mock import MagicMock from feed_ingestion.flows.peloton.flow import Flow def test_flow_decider_schedules_full_dag(): """The decider schedules the full activity DAG in order.""" flow_instance = Flow() schedule = MagicMock() schedule_result = MagicMock() schedule_result.result = {} schedule.return_value = schedule_result flow_instance.decider(schedule) schedule.assert_has_calls([ mock.call('get_first_day_of_month', mock.ANY), mock.call('bootstrap', mock.ANY, requires=[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('load_staging_raw_table', mock.ANY, requires=[mock.ANY]), mock.call('set_status_to_ingested', mock.ANY, requires=[mock.ANY]), ]) def test_flow_decider_stops_when_file_unavailable(): """The decider stops after grab_drop_files if a file is missing.""" flow_instance = Flow() schedule = MagicMock() schedule_result = MagicMock() schedule_result.result = {'grab_drop_files.stop': True} schedule.return_value = schedule_result flow_instance.decider(schedule) scheduled = [call.args[0] for call in schedule.call_args_list] assert 'set_status_to_downloaded' not in scheduled assert 'load_staging_raw_table' not in scheduled assert 'set_status_to_ingested' not in scheduled