"""Tests for artifact writer."""
from pathfinder_mcp.artifacts import ArtifactWriter
class TestArtifactWriter:
"""Tests for ArtifactWriter class."""
def test_write_research_creates_file(
self,
artifact_writer: ArtifactWriter,
session_manager,
sample_session_id: str,
) -> None:
"""write_research creates research.md."""
session_manager.create_session(sample_session_id)
path = artifact_writer.write_research(
sample_session_id, "Test findings", task="Test Task"
)
assert path.exists()
assert path.name == "research.md"
content = path.read_text()
assert "Test Task" in content
assert "Test findings" in content
def test_write_research_appends(
self,
artifact_writer: ArtifactWriter,
session_manager,
sample_session_id: str,
) -> None:
"""write_research appends to existing file."""
session_manager.create_session(sample_session_id)
artifact_writer.write_research(sample_session_id, "First", task="Task")
artifact_writer.write_research(sample_session_id, "Second")
content = artifact_writer.read_artifact(sample_session_id, "research.md")
assert content is not None
assert "First" in content
assert "Second" in content
def test_write_plan_creates_file(
self,
artifact_writer: ArtifactWriter,
session_manager,
sample_session_id: str,
sample_plan_content: str,
) -> None:
"""write_plan creates plan.md."""
session_manager.create_session(sample_session_id)
path = artifact_writer.write_plan(sample_session_id, sample_plan_content)
assert path.exists()
assert path.name == "plan.md"
def test_write_progress_creates_file(
self,
artifact_writer: ArtifactWriter,
session_manager,
sample_session_id: str,
) -> None:
"""write_progress creates progress.md."""
session_manager.create_session(sample_session_id)
path = artifact_writer.write_progress(sample_session_id, "Phase 1 done")
assert path.exists()
assert path.name == "progress.md"
def test_read_artifact_returns_content(
self,
artifact_writer: ArtifactWriter,
session_manager,
sample_session_id: str,
) -> None:
"""read_artifact returns file content."""
session_manager.create_session(sample_session_id)
artifact_writer.write_research(sample_session_id, "Content", task="Task")
content = artifact_writer.read_artifact(sample_session_id, "research.md")
assert content is not None
assert "Content" in content
def test_read_artifact_returns_none_for_missing(
self,
artifact_writer: ArtifactWriter,
session_manager,
sample_session_id: str,
) -> None:
"""read_artifact returns None for non-existent file."""
session_manager.create_session(sample_session_id)
result = artifact_writer.read_artifact(sample_session_id, "nonexistent.md")
assert result is None
def test_artifact_exists(
self,
artifact_writer: ArtifactWriter,
session_manager,
sample_session_id: str,
) -> None:
"""artifact_exists correctly detects files."""
session_manager.create_session(sample_session_id)
assert not artifact_writer.artifact_exists(sample_session_id, "research.md")
artifact_writer.write_research(sample_session_id, "Test", task="Task")
assert artifact_writer.artifact_exists(sample_session_id, "research.md")
def test_get_plan_template(self, artifact_writer: ArtifactWriter) -> None:
"""get_plan_template returns valid template."""
template = artifact_writer.get_plan_template(
name="Test Plan", overview="Test overview"
)
assert "---" in template # YAML frontmatter
assert "Test Plan" in template
assert "Test overview" in template
assert "## Architecture Overview" in template
assert "## Phase 1" in template