feat: add focused draft remove commands
This commit is contained in:
@@ -775,6 +775,45 @@ async def test_rpc_draft_workspace_focused_edit_methods(tmp_path) -> None:
|
||||
)
|
||||
|
||||
|
||||
async def test_rpc_draft_workspace_remove_route(tmp_path) -> None:
|
||||
server = build_local_static_workflow_server(tmp_path / "store")
|
||||
app = create_rpc_app(server)
|
||||
transport = httpx.ASGITransport(app=app)
|
||||
async with httpx.AsyncClient(transport=transport, base_url="http://test") as client:
|
||||
created = await _rpc(
|
||||
client,
|
||||
"workflow.draft_workspaces.create_from_capability",
|
||||
{
|
||||
"workspace_id": "remove_route_ws",
|
||||
"capability_name": "wf.std.constant",
|
||||
"name": "remove_route_test",
|
||||
"output_map": {"value": "state.result"},
|
||||
},
|
||||
)
|
||||
assert created["result"]["workspace_id"] == "remove_route_ws"
|
||||
|
||||
removed = await _rpc(
|
||||
client,
|
||||
"workflow.draft_workspaces.remove_route",
|
||||
{
|
||||
"workspace_id": "remove_route_ws",
|
||||
"revision": 1,
|
||||
"step_id": "call",
|
||||
"outcome": "ok",
|
||||
},
|
||||
)
|
||||
|
||||
assert removed["result"]["revision"] == 2
|
||||
assert removed["result"]["status"] == "invalid"
|
||||
|
||||
inspected = await _rpc(
|
||||
client,
|
||||
"workflow.draft_workspaces.get",
|
||||
{"workspace_id": "remove_route_ws", "include_draft": True},
|
||||
)
|
||||
assert inspected["result"]["draft"]["routes"]["call"] == {}
|
||||
|
||||
|
||||
async def test_rpc_draft_workspace_add_step_from_capability(tmp_path) -> None:
|
||||
server = build_local_static_workflow_server(tmp_path / "store")
|
||||
app = create_rpc_app(server)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any
|
||||
|
||||
import httpx
|
||||
|
||||
from wf_api.models import RawWorkflowPlan, TraceRange
|
||||
@@ -7,6 +9,7 @@ from wf_api.surface import WorkflowDraftSurface
|
||||
from wf_core import END
|
||||
from wf_server import build_local_static_workflow_server
|
||||
from wf_transport_rpc_http import RpcWorkflowApiClient, create_rpc_app
|
||||
from wf_transport_rpc_http.client.drafts import RpcDraftClientMixin
|
||||
from wf_transport_rpc_http.client.sources import RpcSourceAdminClientMixin
|
||||
|
||||
|
||||
@@ -518,6 +521,43 @@ async def test_rpc_client_draft_workspace_focused_edit_methods(tmp_path) -> None
|
||||
assert state_bound["revision"] == 8
|
||||
|
||||
|
||||
async def test_rpc_client_draft_remove_methods(tmp_path) -> None:
|
||||
calls: list[dict[str, Any]] = []
|
||||
|
||||
class Client(RpcDraftClientMixin):
|
||||
async def _call(self, method: str, params: dict[str, object]):
|
||||
calls.append({"method": method, "params": params})
|
||||
return {"revision": 2}
|
||||
|
||||
client = Client()
|
||||
route_result = await client.remove_draft_route(
|
||||
workspace_id="ws",
|
||||
revision=1,
|
||||
step_id="call",
|
||||
outcome="ok",
|
||||
)
|
||||
step_result = await client.remove_draft_step(
|
||||
workspace_id="ws",
|
||||
revision=1,
|
||||
step_id="call",
|
||||
)
|
||||
binding_result = await client.remove_draft_binding(
|
||||
workspace_id="ws",
|
||||
revision=1,
|
||||
step_id="echo",
|
||||
inputs=["message"],
|
||||
outputs=["debug"],
|
||||
)
|
||||
|
||||
assert route_result == {"revision": 2}
|
||||
assert step_result == {"revision": 2}
|
||||
assert binding_result == {"revision": 2}
|
||||
assert calls[0]["method"] == "workflow.draft_workspaces.remove_route"
|
||||
assert calls[1]["method"] == "workflow.draft_workspaces.remove_step"
|
||||
assert calls[2]["method"] == "workflow.draft_workspaces.remove_binding"
|
||||
assert calls[2]["params"]["inputs"] == ["message"]
|
||||
|
||||
|
||||
async def test_rpc_client_draft_workspace_add_step_from_capability(tmp_path) -> None:
|
||||
server = build_local_static_workflow_server(tmp_path / "store")
|
||||
app = create_rpc_app(server)
|
||||
|
||||
Reference in New Issue
Block a user