"""Unit tests for YouTube Asset Report Workflow.""" from unittest import mock from unittest.mock import MagicMock from feed_ingestion.flows.youtube_asset.flow import Flow def test_decider_the_orchard(): """Test normal decider execution for theorchard licensor .""" licensor = 'theorchard' bootstrap_mock = MagicMock() # bootstrap.result.get(): licensor for the licensor lookup bootstrap_mock.result.get.side_effect = ( lambda key: licensor if key == 'bootstrap.licensor' else None) schedule = MagicMock() # schedule('bootstrap', self.bootstrap) schedule.return_value = bootstrap_mock flow = Flow() flow.decider(schedule) schedule.assert_has_calls([ mock.call('bootstrap', mock.ANY), mock.call().result.get('bootstrap.stop'), mock.call().result.get('bootstrap.licensor'), mock.call().result.get('bootstrap.skip_grab_reports_files'), mock.call().result.get('bootstrap.skip_grab_reports_files'), mock.call('grab_reports_files', mock.ANY, requires=[mock.ANY]), mock.call().result.get('grab_reports_files.stop'), mock.call('source_files', 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_decider_sme(): """Test normal decider execution for sme licensor .""" licensor = 'sme' bootstrap_mock = MagicMock() # bootstrap.result.get(): licensor for the licensor lookup bootstrap_mock.result.get.side_effect = ( lambda key: licensor if key == 'bootstrap.licensor' else None) schedule = MagicMock() # schedule('bootstrap', self.bootstrap) schedule.return_value = bootstrap_mock flow = Flow() flow.decider(schedule) schedule.assert_has_calls([ mock.call('bootstrap', mock.ANY), mock.call().result.get('bootstrap.stop'), mock.call().result.get('bootstrap.licensor'), mock.call('sme_copy_from_athena_to_s3', mock.ANY, requires=[mock.ANY]), mock.call().result.get('sme_copy_from_athena_to_s3.stop'), mock.call('source_files', 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]) ])