Example #1
0
 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
Example #2
0
 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,
     )
Example #4
0
 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"),
     )
Example #5
0
 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,
     )
Example #6
0
 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",
     )
Example #7
0
    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,
        )
Example #8
0
 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,
     )
Example #9
0
 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)
Example #10
0
 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")
Example #11
0
 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"