import pytest import tempfile from pathlib import Path from src import mcp_client from src import beads_client def test_bd_mcp_tools(tmp_path: Path): # Setup mock workspace workspace_dir = tmp_path / "workspace" workspace_dir.mkdir() # Configure mcp client allowlist mcp_client.configure([{"path": str(workspace_dir)}], extra_base_dirs=[str(workspace_dir)]) # Initialize Beads repo manually to simulate state bclient = beads_client.BeadsClient(workspace_dir) bclient.init_repo() # Tools should be registered tools = mcp_client.get_tool_schemas() tool_names = [t["name"] for t in tools] assert "bd_create" in tool_names assert "bd_update" in tool_names assert "bd_list" in tool_names # Test bd_create resp = mcp_client.dispatch("bd_create", {"title": "First Bead", "description": "This is a test bead"}) assert "bead-1" in resp # Test bd_list list_resp = mcp_client.dispatch("bd_list", {}) assert "bead-1" in list_resp assert "First Bead" in list_resp # Test bd_ready ready_resp = mcp_client.dispatch("bd_ready", {}) assert ready_resp == "READY" # Test bd_update update_resp = mcp_client.dispatch("bd_update", {"bead_id": "bead-1", "status": "completed"}) assert "bead-1" in update_resp # Test bd_list after update list_resp2 = mcp_client.dispatch("bd_list", {}) assert "Status: completed" in list_resp2