from unittest.mock import AsyncMock, patch import pytest from tests.helpers import fake_note pytestmark = pytest.mark.usefixtures("_bind_user") @pytest.mark.asyncio async def test_create_task_passes_kind(): # kind=plan is retired (plans are milestones); 'issue' exercises passthrough. mock = AsyncMock(return_value=fake_note(task_kind="issue")) with patch("scribe.mcp.tools.tasks.notes_svc.create_note", mock): from scribe.mcp.tools.tasks import create_task await create_task(title="P", kind="issue") assert mock.call_args.kwargs["task_kind"] == "issue" @pytest.mark.asyncio async def test_list_tasks_passes_kind_filter(): mock = AsyncMock(return_value=([], 0)) with patch("scribe.mcp.tools.tasks.notes_svc.list_notes", mock): from scribe.mcp.tools.tasks import list_tasks await list_tasks(kind="plan") assert mock.call_args.kwargs["task_kind"] == "plan" @pytest.mark.asyncio async def test_list_tasks_kind_empty_means_no_filter(): mock = AsyncMock(return_value=([], 0)) with patch("scribe.mcp.tools.tasks.notes_svc.list_notes", mock): from scribe.mcp.tools.tasks import list_tasks await list_tasks() assert mock.call_args.kwargs["task_kind"] is None