"""服务器获取提示内容详细测试."""
import pytest
from unittest.mock import Mock, MagicMock, patch
from src.server import create_server
class TestServerGetPromptContent:
"""服务器获取提示内容详细测试类."""
@pytest.fixture
def server(self):
"""创建服务器实例."""
return create_server()
@pytest.mark.asyncio
async def test_get_prompt_query_user_preferences_content(self, server):
"""测试获取查询用户偏好提示内容."""
prompt_name = "query_user_preferences"
arguments = {"category": "programming"}
# 验证提示名称和参数格式
assert prompt_name.startswith("query_")
assert isinstance(arguments, dict)
assert "category" in arguments
@pytest.mark.asyncio
async def test_get_prompt_query_project_info_content(self, server):
"""测试获取查询项目信息提示内容."""
prompt_name = "query_project_info"
arguments = {"project_name": "test_project"}
assert prompt_name.startswith("query_")
assert isinstance(arguments, dict)
@pytest.mark.asyncio
async def test_get_prompt_query_recent_learning_content(self, server):
"""测试获取查询最近学习提示内容."""
prompt_name = "query_recent_learning"
arguments = {"days": 30}
assert prompt_name.startswith("query_")
assert isinstance(arguments, dict)
assert "days" in arguments
@pytest.mark.asyncio
async def test_get_prompt_query_best_practices_content(self, server):
"""测试获取查询最佳实践提示内容."""
prompt_name = "query_best_practices"
arguments = {"topic": "coding"}
assert prompt_name.startswith("query_")
assert isinstance(arguments, dict)
@pytest.mark.asyncio
async def test_get_prompt_add_learning_note_content(self, server):
"""测试获取添加学习笔记提示内容."""
prompt_name = "add_learning_note"
arguments = {"content": "Test note", "topic": "Python"}
assert not prompt_name.startswith("query_")
assert isinstance(arguments, dict)
assert "content" in arguments
@pytest.mark.asyncio
async def test_get_prompt_query_related_entities_content(self, server):
"""测试获取查询相关实体提示内容."""
prompt_name = "query_related_entities"
arguments = {"entity_name": "TypeScript", "depth": 1}
assert prompt_name.startswith("query_")
assert isinstance(arguments, dict)
assert "entity_name" in arguments
@pytest.mark.asyncio
async def test_get_prompt_summarize_knowledge_content(self, server):
"""测试获取总结知识提示内容."""
prompt_name = "summarize_knowledge"
arguments = {"category": "preference"}
assert prompt_name.startswith("summarize")
assert isinstance(arguments, dict)
@pytest.mark.asyncio
async def test_get_prompt_export_data_content(self, server):
"""测试获取导出数据提示内容."""
prompt_name = "export_data"
arguments = {"format": "json"}
assert prompt_name.startswith("export")
assert isinstance(arguments, dict)
assert "format" in arguments
@pytest.mark.asyncio
async def test_get_prompt_get_statistics_content(self, server):
"""测试获取统计信息提示内容."""
prompt_name = "get_statistics"
arguments = {}
assert prompt_name.startswith("get")
assert isinstance(arguments, dict)
assert len(arguments) == 0
@pytest.mark.asyncio
async def test_get_prompt_unknown_prompt_handling(self, server):
"""测试获取未知提示的处理."""
prompt_name = "unknown_prompt_xyz"
# 验证未知提示名称格式
assert prompt_name not in [
"query_user_preferences",
"query_project_info",
"query_recent_learning",
"query_best_practices",
"add_learning_note",
"query_related_entities",
"summarize_knowledge",
"export_data",
"get_statistics",
]