def test_flow_run_view_query_for_flow_run_uses_where_in_query(monkeypatch): post = MagicMock(return_value={"data": {"flow_run": [FLOW_RUN_DATA_1]}}) monkeypatch.setattr("prefect.client.client.Client.post", post) FlowRunView._query_for_flow_run(where={"foo": {"_eq": "bar"}}) assert ('flow_run(where: { foo: { _eq: "bar" } })' in post.call_args[1]["params"]["query"])
def test_flow_run_view_query_for_flow_run_includes_all_required_data( monkeypatch): graphql = MagicMock(return_value={"data": {"flow_run": [FLOW_RUN_DATA_1]}}) monkeypatch.setattr("prefect.client.client.Client.graphql", graphql) FlowRunView._query_for_flow_run(where={}) query_dict = graphql.call_args[0][0] selection_set = query_dict["query"]["flow_run(where: {})"] assert selection_set == { "id": True, "name": True, "serialized_state": True, "states": {"serialized_state", "timestamp"}, "flow_id": True, "context": True, "parameters": True, "labels": True, "updated": True, "run_config": True, }
def test_flow_run_view_query_for_flow_run_unpacks_result_singleton(patch_post): patch_post({"data": {"flow_run": [1]}}) assert FlowRunView._query_for_flow_run(where={}) == 1
def test_flow_run_view_query_for_flow_run_errors_on_multiple_flow_runs( patch_post): patch_post({"data": {"flow_run": [1, 2]}}) with pytest.raises(ValueError, match=r"multiple \(2\) flow runs"): FlowRunView._query_for_flow_run(where={})
def test_flow_run_view_query_for_flow_run_raises_when_not_found(patch_post): patch_post({"data": {"flow_run": []}}) with pytest.raises(ValueError, match="No flow runs found"): FlowRunView._query_for_flow_run(where={})
def test_flow_run_view_query_for_flow_run_raises_bad_responses(patch_post): patch_post({}) with pytest.raises(ValueError, match="bad result while querying for flow runs"): FlowRunView._query_for_flow_run(where={})