MCP Claude Code
by SDGLBL
Verified
- mcp-claude-code
- tests
- test_agent
"""Tests for the agent tool adapter module."""
from unittest.mock import MagicMock
import pytest
from mcp_claude_code.tools.agent.tool_adapter import (
convert_tool_parameters,
convert_tools_to_openai_functions,
)
from mcp_claude_code.tools.common.base import BaseTool
class TestToolAdapter:
"""Test cases for the agent tool adapter module."""
@pytest.fixture
def mock_tool(self):
"""Create a mock tool."""
tool = MagicMock(spec=BaseTool)
tool.name = "read_files"
tool.description = "Read files from the file system"
tool.parameters = {
"properties": {
"paths": {
"anyOf": [
{"items": {"type": "string"}, "type": "array"},
{"type": "string"},
],
"title": "Paths",
},
},
"required": ["paths"],
"title": "read_filesArguments",
"type": "object",
}
tool.required = ["paths"]
return tool
@pytest.fixture
def mock_simple_tool(self):
"""Create a mock tool with minimal parameters."""
tool = MagicMock(spec=BaseTool)
tool.name = "think"
tool.description = "Think about something"
tool.parameters = {
"properties": {
"thought": {
"title": "Thought",
"type": "string",
},
},
}
tool.required = ["thought"]
return tool
def test_convert_tools_to_openai_functions(self, mock_tool, mock_simple_tool):
"""Test convert_tools_to_openai_functions."""
# Convert tools
openai_functions = convert_tools_to_openai_functions([mock_tool, mock_simple_tool])
# Verify result
assert len(openai_functions) == 2
# Check first tool
assert openai_functions[0]["type"] == "function"
assert openai_functions[0]["function"]["name"] == "read_files"
assert openai_functions[0]["function"]["description"] == "Read files from the file system"
assert "parameters" in openai_functions[0]["function"]
# Check second tool
assert openai_functions[1]["type"] == "function"
assert openai_functions[1]["function"]["name"] == "think"
assert openai_functions[1]["function"]["description"] == "Think about something"
assert "parameters" in openai_functions[1]["function"]
def test_convert_tool_parameters_complete(self, mock_tool):
"""Test convert_tool_parameters with complete parameters."""
# Convert parameters
params = convert_tool_parameters(mock_tool)
# Verify result
assert params["type"] == "object"
assert "properties" in params
assert "paths" in params["properties"]
assert params["required"] == ["paths"]
def test_convert_tool_parameters_minimal(self, mock_simple_tool):
"""Test convert_tool_parameters with minimal parameters."""
# Convert parameters
params = convert_tool_parameters(mock_simple_tool)
# Verify result
assert params["type"] == "object"
assert "properties" in params
assert "thought" in params["properties"]
assert params["required"] == ["thought"]