"""测试 get_learning_trends MCP 工具."""
import pytest
from unittest.mock import Mock
from src.tools import handle_tool_call
from src.config_manager import ConfigManager
from src.graphiti_client import GraphitiClient
class TestToolsGetLearningTrends:
"""验证学习趋势工具输出."""
@pytest.fixture
def config_manager(self, temp_config_dir):
return ConfigManager(config_path=temp_config_dir / ".graphitiace" / "config.json")
@pytest.mark.asyncio
async def test_trends_output(self, config_manager):
graphiti_client = Mock(spec=GraphitiClient)
graphiti_client.is_connected.return_value = True
ace_manager = Mock()
ace_manager.is_enabled.return_value = True
ace_manager.optimize_tool_input.return_value = {}
ace_manager.get_learning_trends.return_value = [
{
"date": "2025-12-01",
"success_rate": 0.8,
"usage_count": 10,
"success_count": 8,
"failure_count": 2,
"avg_rating": 4.2,
}
]
result = await handle_tool_call(
tool_name="get_learning_trends",
arguments={"tool_name": "search_entities", "days": 7},
config_manager=config_manager,
graphiti_client=graphiti_client,
ace_manager=ace_manager,
)
assert result is not None
text = result[0].text
assert "search_entities 学习趋势" in text
assert "成功率 80.0%" in text