Files
lda-wf/tests/wf_mcp/test_mcp_workflow_surface_example.py
T

53 lines
1.8 KiB
Python

from __future__ import annotations
import asyncio
from examples.mcp_workflow_surface import (
build_echo_draft,
create_and_run_echo_deployment,
prepare_demo_service,
)
from examples.mcp_wrapper_authoring_flow import author_echo_wrapper_from_capability
def test_mcp_workflow_surface_example_discovers_ok_and_error_outcomes(
tmp_path,
) -> None:
service = asyncio.run(prepare_demo_service(tmp_path))
source = service.inspect_source("demo.personal")
node_spec = source["capabilities"]["node_spec_details"][0]
assert node_spec["name"] == "demo.personal.echo_tool"
assert node_spec["outcomes"] == ["ok", "error"]
def test_mcp_workflow_surface_example_wires_naive_error_outcome() -> None:
draft = build_echo_draft()
assert draft["routes"]["echo"]["ok"] == "__end__"
assert draft["routes"]["echo"]["error"] == "tool_error"
assert draft["steps"]["tool_error"]["use"] == "wf.std.runtime_error"
def test_mcp_workflow_surface_example_runs_happy_path(tmp_path) -> None:
payload = asyncio.run(create_and_run_echo_deployment(tmp_path, text="hello"))
assert payload["status"] == "completed"
output = payload["output"]
assert output is not None
assert output["echoed"] == "hello"
assert payload["diagnostics"] == []
def test_mcp_wrapper_authoring_flow_example_creates_and_calls_wrapper(tmp_path) -> None:
payload = asyncio.run(author_echo_wrapper_from_capability(tmp_path))
assert payload["inspected_hints"]["capability_name"] == "demo.personal.echo_tool"
assert payload["workspace"]["status"] == "valid"
assert payload["created"]["saved"] is True
assert payload["called"]["qualified_name"] == "workflow.echo_wrapper.v1"
assert payload["called"]["kind"] == "wrapper_artifact"
assert payload["called"]["outcome"] == "completed"
assert payload["called"]["output"]["echoed"] == "hello"