def test_displays_flow_run_url(self, MockFlowView, MockClient, caplog): MockClient().create_flow_run.return_value = "flow-run-id" MockClient().get_cloud_url.return_value = "fake-url" create_flow_run.run(flow_id="flow-id") MockClient().get_cloud_url.assert_called_once_with( "flow-run", "flow-run-id") assert "Created flow run '<generated-name>': fake-url" in caplog.text
def test_lookup_uses_given_identifiers(self, kwargs, MockFlowView, MockClient): create_flow_run.run(**kwargs) if "flow_id" in kwargs: MockFlowView.from_id.assert_called_once_with("flow-id") elif "flow_name" in kwargs: MockFlowView.from_flow_name.assert_called_once_with( "flow-name", project_name=kwargs.get("project_name", ""))
def test_creates_flow_run_with_defaults(self, MockFlowView, MockClient): MockFlowView.from_id.return_value.flow_id = "flow-id" create_flow_run.run(flow_id="flow-id") MockClient().create_flow_run.assert_called_once_with( flow_id="flow-id", parameters=None, run_name=None, labels=None, context=None, run_config=None, scheduled_start_time=None, )
def test_creates_flow_with_given_settings(self, MockFlowView, MockClient, kwargs): MockFlowView.from_id.return_value.flow_id = "flow-id" create_flow_run.run(flow_id="flow-id", **kwargs) MockClient().create_flow_run.assert_called_once_with( flow_id="flow-id", parameters=kwargs.get("parameters"), run_name=kwargs.get("run_name"), labels=kwargs.get("labels"), context=kwargs.get("context"), run_config=kwargs.get("run_config"), scheduled_start_time=kwargs.get("scheduled_start_time"), )
def test_generates_run_name_from_parent_and_child(self, MockFlowView, MockClient): MockFlowView.from_id.return_value.flow_id = "flow-id" MockFlowView.from_id.return_value.name = "child-name" with prefect.context(flow_run_name="parent-run"): create_flow_run.run(flow_id="flow-id") MockClient().create_flow_run.assert_called_once_with( flow_id="flow-id", parameters=None, run_name="parent-run-child-name", labels=None, context=None, run_config=None, scheduled_start_time=None, )
def test_creates_flow_run_with_idempotency_from_task_run_id_in_context( self, MockFlowView, MockClient): MockFlowView.from_id.return_value.flow_id = "flow-id" with prefect.context({"task_run_id": "test"}): create_flow_run.run(flow_id="flow-id") MockClient().create_flow_run.assert_called_once_with( flow_id="flow-id", parameters=None, run_name=None, labels=None, context=None, run_config=None, scheduled_start_time=None, idempotency_key="test", )
def testcreates_flow_run_with_name_from_current_run_name( self, MockFlowView, MockClient): MockFlowView.from_id.return_value.flow_id = "flow-id" MockFlowView.from_id.return_value.name = "child_flow_name" with prefect.context({"flow_run_name": "parent_run_name"}): create_flow_run.run(flow_id="flow-id") MockClient().create_flow_run.assert_called_once_with( flow_id="flow-id", parameters=None, run_name="parent_run_name-child_flow_name", labels=None, context=None, run_config=None, scheduled_start_time=None, idempotency_key=None, )
def test_creates_flow_in_future(self, MockFlowView, MockClient, monkeypatch, kwargs): MockFlowView.from_id.return_value.flow_id = "flow-id" # Mocking the concept of "now" so we can have consistent assertions now = pendulum.now("utc") mock_now = MagicMock(return_value=now) monkeypatch.setattr("prefect.client.client.pendulum.now", mock_now) create_flow_run.run(flow_id="flow-id", **kwargs) MockClient().create_flow_run.assert_called_once_with( flow_id="flow-id", parameters=kwargs.get("parameters"), run_name=kwargs.get("run_name"), labels=kwargs.get("labels"), context=kwargs.get("context"), run_config=kwargs.get("run_config"), scheduled_start_time=pendulum.now("utc") + kwargs.get("scheduled_start_time"), idempotency_key=None, )
def test_requires_id_or_name(self): with pytest.raises(ValueError, match="`flow_id` and `flow_name` are null"): create_flow_run.run(flow_id=None, flow_name=None)
def test_does_not_accept_both_id_and_name(self): with pytest.raises(ValueError, match="Received both `flow_id` and `flow_name`"): create_flow_run.run(flow_id=uuid4(), flow_name="foo")
def test_returns_flow_run_idl(self, MockFlowView, MockClient): MockClient().create_flow_run.return_value = "flow-run-id" result = create_flow_run.run(flow_id="flow-id") assert result == "flow-run-id"