Spaces:
Sleeping
Sleeping
| """Unit tests for MCP server tool executor.""" | |
| import pytest | |
| from chatassistant_retail.tools.mcp_server import ToolExecutor | |
| class TestToolExecutor: | |
| """Test tool executor functionality.""" | |
| async def test_execute_tool_with_empty_name(self): | |
| """Test that empty tool name returns proper error.""" | |
| executor = ToolExecutor() | |
| result = await executor.execute_tool("", {}) | |
| assert result["success"] is False | |
| assert "Tool name is required" in result["message"] | |
| async def test_execute_tool_with_none_name(self): | |
| """Test that None tool name returns proper error.""" | |
| executor = ToolExecutor() | |
| result = await executor.execute_tool(None, {}) | |
| assert result["success"] is False | |
| assert "Tool name is required" in result["message"] | |
| async def test_execute_tool_with_unknown_name(self): | |
| """Test that unknown tool name returns proper error.""" | |
| executor = ToolExecutor() | |
| result = await executor.execute_tool("nonexistent_tool", {}) | |
| assert result["success"] is False | |
| assert "Unknown tool: nonexistent_tool" in result["message"] | |
| async def test_execute_query_inventory_tool(self): | |
| """Test executing query_inventory tool.""" | |
| executor = ToolExecutor() | |
| result = await executor.execute_tool("query_inventory", {"low_stock": True, "threshold": 10}) | |
| assert result["success"] is True | |
| assert "summary" in result | |
| assert "products" in result | |
| async def test_execute_calculate_reorder_point_tool(self): | |
| """Test executing calculate_reorder_point tool.""" | |
| executor = ToolExecutor() | |
| result = await executor.execute_tool("calculate_reorder_point", {"sku": "SKU-10000"}) | |
| assert result["success"] is True | |
| assert "product" in result or "error" in result # May fail if SKU doesn't exist | |
| async def test_execute_create_purchase_order_tool(self): | |
| """Test executing create_purchase_order tool.""" | |
| executor = ToolExecutor() | |
| result = await executor.execute_tool("create_purchase_order", {"sku": "SKU-10000", "quantity": 100}) | |
| assert result["success"] is True | |
| # Check for either purchase order creation or error response | |
| assert "purchase_order" in result or "error" in result or "message" in result | |
| async def test_tool_executor_initializes_all_tools(self): | |
| """Test that tool executor initializes with all expected tools.""" | |
| executor = ToolExecutor() | |
| assert len(executor.tools) == 3 | |
| assert "query_inventory" in executor.tools | |
| assert "calculate_reorder_point" in executor.tools | |
| assert "create_purchase_order" in executor.tools | |