"""Unit tests for list_processes MCP tool.
Tests the list_processes tool implementation per mcp-tools.json contract.
"""
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from pathlib import Path
class TestListProcessesImpl:
"""Tests for list_processes_impl function (T016)."""
def test_list_processes_impl_success(self, temp_dir: Path) -> None:
"""Test successful process listing."""
from sso_mcp_server.processes.service import ProcessService
from sso_mcp_server.tools.list_processes import list_processes_impl
(temp_dir / "code-review.md").write_text(
"""---
name: Code Review
description: Review procedure
---
Content.
"""
)
(temp_dir / "deployment.md").write_text(
"""---
name: Deployment
description: Deploy procedure
---
Content.
"""
)
service = ProcessService(temp_dir)
result = list_processes_impl(service)
assert "error" not in result
assert "processes" in result
assert result["count"] == 2
names = {p["name"] for p in result["processes"]}
assert "Code Review" in names
assert "Deployment" in names
def test_list_processes_impl_empty_directory(self, temp_dir: Path) -> None:
"""Test list_processes with empty directory returns empty list."""
from sso_mcp_server.processes.service import ProcessService
from sso_mcp_server.tools.list_processes import list_processes_impl
empty_dir = temp_dir / "empty"
empty_dir.mkdir()
service = ProcessService(empty_dir)
result = list_processes_impl(service)
assert "error" not in result
assert result["processes"] == []
assert result["count"] == 0
assert "message" in result # Should have helpful message
def test_list_processes_impl_includes_descriptions(self, temp_dir: Path) -> None:
"""Test that list result includes descriptions."""
from sso_mcp_server.processes.service import ProcessService
from sso_mcp_server.tools.list_processes import list_processes_impl
(temp_dir / "test.md").write_text(
"""---
name: Test Process
description: A detailed description
---
Content.
"""
)
service = ProcessService(temp_dir)
result = list_processes_impl(service)
assert len(result["processes"]) == 1
assert result["processes"][0]["description"] == "A detailed description"