"""服务器获取提示详细测试."""
import pytest
from unittest.mock import Mock, MagicMock, patch
from src.server import create_server
class TestServerGetPromptDetailed:
"""服务器获取提示详细测试类."""
@pytest.fixture
def server(self):
"""创建服务器实例."""
return create_server()
@pytest.mark.asyncio
async def test_get_prompt_query_user_preferences_with_args(self, server):
"""测试获取查询用户偏好提示(带参数)."""
prompt_name = "query_user_preferences"
arguments = {"category": "programming"}
# 验证提示名称和参数
assert prompt_name.startswith("query_")
assert "category" in arguments
@pytest.mark.asyncio
async def test_get_prompt_query_project_info_with_args(self, server):
"""测试获取查询项目信息提示(带参数)."""
prompt_name = "query_project_info"
arguments = {"project_name": "test_project"}
assert prompt_name.startswith("query_")
assert "project_name" in arguments
@pytest.mark.asyncio
async def test_get_prompt_query_recent_learning_with_args(self, server):
"""测试获取查询最近学习提示(带参数)."""
prompt_name = "query_recent_learning"
arguments = {"days": 7}
assert prompt_name.startswith("query_")
assert "days" in arguments
@pytest.mark.asyncio
async def test_get_prompt_query_best_practices_with_args(self, server):
"""测试获取查询最佳实践提示(带参数)."""
prompt_name = "query_best_practices"
arguments = {"category": "coding"}
assert prompt_name.startswith("query_")
assert "category" in arguments
@pytest.mark.asyncio
async def test_get_prompt_query_related_entities_with_args(self, server):
"""测试获取查询相关实体提示(带参数)."""
prompt_name = "query_related_entities"
arguments = {"entity_name": "TypeScript"}
assert prompt_name.startswith("query_")
assert "entity_name" in arguments
@pytest.mark.asyncio
async def test_get_prompt_summarize_knowledge_with_args(self, server):
"""测试获取总结知识提示(带参数)."""
prompt_name = "summarize_knowledge"
arguments = {"topic": "programming"}
assert prompt_name.startswith("summarize")
assert "topic" in arguments
@pytest.mark.asyncio
async def test_get_prompt_export_data_with_args(self, server):
"""测试获取导出数据提示(带参数)."""
prompt_name = "export_data"
arguments = {"format": "json"}
assert prompt_name.startswith("export")
assert "format" in arguments
@pytest.mark.asyncio
async def test_get_prompt_get_statistics_no_args(self, server):
"""测试获取统计信息提示(无参数)."""
prompt_name = "get_statistics"
arguments = {}
assert prompt_name.startswith("get")
assert len(arguments) == 0
@pytest.mark.asyncio
async def test_get_prompt_all_prompts_exist(self, server):
"""测试所有提示都存在."""
expected_prompts = [
"query_user_preferences",
"query_project_info",
"query_recent_learning",
"query_best_practices",
"query_related_entities",
"summarize_knowledge",
"export_data",
"get_statistics",
]
for prompt_name in expected_prompts:
assert len(prompt_name) > 0
assert prompt_name in expected_prompts