import pytest from fastmcp.client import Client from fastmcp.client.transports import FastMCPTransport from main import app as mcp_app @pytest.fixture async def main_mcp_client(): async with Client(transport=mcp_app) as mcp_client: yield mcp_client async def test_get_blocks(main_mcp_client: Client[FastMCPTransport]): """Test retrieving available blocks.""" blocks = await main_mcp_client.call_tool(name="get_blocks") assert blocks.data is not None # We don't know exactly what blocks are there, but should get a list assert isinstance(blocks.data, list) async def test_make_and_remove_block(main_mcp_client: Client[FastMCPTransport]): """Test making a block and then removing it.""" block_type = "analog_sig_source_x" # helper to check if block exists in the flowgraph async def get_block_names(): current_blocks = await main_mcp_client.call_tool(name="get_blocks") return [b["name"] for b in current_blocks.data] # type: ignore # 1. Create a block result = await main_mcp_client.call_tool( name="make_block", arguments={"block_name": block_type} ) assert result.data is not None # The output is the new block name, likely something like "analog_sig_source_x_0" new_block_name = str(result.data) assert block_type in new_block_name # Verify it exists block_names = await get_block_names() assert new_block_name in block_names # 2. Remove the block remove_result = await main_mcp_client.call_tool( name="remove_block", arguments={"block_name": new_block_name} ) assert remove_result.data is True # Verify it's gone block_names = await get_block_names() assert new_block_name not in block_names