"""Test downstream task.""" from unittest import mock from unittest.mock import patch from garcon import activity import pytest from dim_refresh_etl.tasks import downstream @pytest.fixture def import_flow_class_mock(mocker): """Mock flow class import function.""" return mocker.patch( 'dim_refresh_etl.tasks.downstream.import_utils.import_workflow_class') @patch('dim_refresh_etl.tasks.downstream.json') def test_record_refresh_task(json_mock, import_flow_class_mock): """Test downstream contexts get kicked off.""" flow = import_flow_class_mock.return_value.return_value flow.version = '1.0' flow.task_list = 'task_list' flow.name = 'flow_name' flow.domain = 'flow_domain' downstream_contexts = [ {'flow': 'refresh', 'dim_type': 'artist'}, {'flow': 'geocoding', 'param': 'dim_zip'} ] client = mock.Mock() downstream.trigger_workflow(activity.Activity(client), downstream_contexts) client.start_workflow_execution.assert_has_calls([ mock.call( domain=flow.domain, workflowId=flow.workflow_id.return_value, workflowType={'name': flow.name, 'version': flow.version}, taskList={'name': flow.name}, executionStartToCloseTimeout='7200', input=mock.ANY)] * len(downstream_contexts)) json_mock.dumps.assert_has_calls( [mock.call(context) for context in downstream_contexts])