"""服务器提示测试."""
import pytest
from unittest.mock import Mock, MagicMock, patch
from src.server import create_server
from src.config_manager import ConfigManager
from src.graphiti_client import GraphitiClient
class TestServerPrompts:
"""服务器提示测试类."""
@pytest.fixture
def server(self):
"""创建服务器实例."""
return create_server()
@pytest.fixture
def config_manager(self, temp_config_dir):
"""创建配置管理器."""
return ConfigManager(config_path=temp_config_dir / ".graphitiace" / "config.json")
@pytest.fixture
def graphiti_client(self, config_manager):
"""创建 Graphiti 客户端."""
return GraphitiClient(config_manager)
@pytest.mark.asyncio
async def test_get_prompt_query_user_preferences(self, server):
"""测试获取查询用户偏好提示."""
# 测试提示模板逻辑
prompt_name = "query_user_preferences"
assert prompt_name.startswith("query_")
assert "preferences" in prompt_name
@pytest.mark.asyncio
async def test_get_prompt_query_project_info(self, server):
"""测试获取查询项目信息提示."""
prompt_name = "query_project_info"
assert prompt_name.startswith("query_")
assert "project" in prompt_name
@pytest.mark.asyncio
async def test_get_prompt_query_recent_learning(self, server):
"""测试获取查询最近学习提示."""
prompt_name = "query_recent_learning"
assert prompt_name.startswith("query_")
assert "learning" in prompt_name
@pytest.mark.asyncio
async def test_get_prompt_query_best_practices(self, server):
"""测试获取查询最佳实践提示."""
prompt_name = "query_best_practices"
assert prompt_name.startswith("query_")
assert "practices" in prompt_name
@pytest.mark.asyncio
async def test_get_prompt_query_related_entities(self, server):
"""测试获取查询相关实体提示."""
prompt_name = "query_related_entities"
assert prompt_name.startswith("query_")
assert "entities" in prompt_name
@pytest.mark.asyncio
async def test_get_prompt_summarize_knowledge(self, server):
"""测试获取总结知识提示."""
prompt_name = "summarize_knowledge"
assert prompt_name.startswith("summarize")
assert "knowledge" in prompt_name
@pytest.mark.asyncio
async def test_get_prompt_export_data(self, server):
"""测试获取导出数据提示."""
prompt_name = "export_data"
assert prompt_name.startswith("export")
assert "data" in prompt_name
@pytest.mark.asyncio
async def test_get_prompt_get_statistics(self, server):
"""测试获取统计信息提示."""
prompt_name = "get_statistics"
assert prompt_name.startswith("get")
assert "statistics" in prompt_name
@pytest.mark.asyncio
async def test_get_prompt_unknown(self, server):
"""测试获取未知提示."""
prompt_name = "unknown_prompt"
assert prompt_name not in [
"query_user_preferences",
"query_project_info",
"query_recent_learning",
"query_best_practices",
"query_related_entities",
"summarize_knowledge",
"export_data",
"get_statistics",
]