import os import sys from typing import TYPE_CHECKING from unittest.mock import AsyncMock, MagicMock import pytest # Add the src directory to the Python path for testing sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '../src'))) # Mock the mcp.server.remote module mock_remote = MagicMock() mock_remote.serve_remote = AsyncMock() sys.modules['mcp.server.remote'] = mock_remote if TYPE_CHECKING: from mcp_server_taskwarrior.server import TaskWarriorServer @pytest.fixture def taskwarrior_server() -> "TaskWarriorServer": """Create a TaskWarriorServer instance for testing.""" from mcp_server_taskwarrior.server import TaskWarriorServer return TaskWarriorServer() @pytest.fixture def mcp_server_mock() -> MagicMock: """Create a mock MCP Server instance with all handlers.""" server = MagicMock() server.list_resources = MagicMock(return_value=lambda: None) server.read_resource = MagicMock(return_value=lambda: None) server.list_prompts = MagicMock(return_value=lambda: None) server.get_prompt = MagicMock(return_value=lambda: None) server.list_tools = MagicMock(return_value=lambda: None) server.call_tool = MagicMock(return_value=lambda: None) server.run = AsyncMock() server.get_capabilities = MagicMock(return_value={}) server.request_context = MagicMock() server.request_context.session = MagicMock() server.request_context.session.send_resource_updated = AsyncMock() return server