Skip to main content
Glama
test_research.py6.1 kB
"""Tests for research tools.""" from pathfinder_mcp.state import Phase from pathfinder_mcp.tools.research import save_research, start_research class TestStartResearch: """Tests for start_research tool.""" def test_creates_session( self, session_manager, artifact_writer, context_monitor, active_sessions, ) -> None: """start_research creates a new session.""" result = start_research( task_description="Test task", session_id="test_001", session_manager=session_manager, artifact_writer=artifact_writer, context_monitor=context_monitor, sessions=active_sessions, ) assert result["session_id"] == "test_001" assert result["phase"] == "research" assert "test_001" in active_sessions def test_auto_generates_session_id( self, session_manager, artifact_writer, context_monitor, active_sessions, ) -> None: """start_research generates session ID if not provided.""" result = start_research( task_description="Test task", session_id=None, session_manager=session_manager, artifact_writer=artifact_writer, context_monitor=context_monitor, sessions=active_sessions, ) assert "session_id" in result assert result["session_id"].startswith("session_") def test_creates_research_artifact( self, session_manager, artifact_writer, context_monitor, active_sessions, ) -> None: """start_research creates research.md artifact.""" start_research( task_description="My test task", session_id="test_002", session_manager=session_manager, artifact_writer=artifact_writer, context_monitor=context_monitor, sessions=active_sessions, ) content = artifact_writer.read_artifact("test_002", "research.md") assert content is not None assert "My test task" in content def test_sets_phase_to_research( self, session_manager, artifact_writer, context_monitor, active_sessions, ) -> None: """start_research sets phase state to RESEARCH.""" start_research( task_description="Test", session_id="test_003", session_manager=session_manager, artifact_writer=artifact_writer, context_monitor=context_monitor, sessions=active_sessions, ) state = active_sessions["test_003"] assert state.current_phase == Phase.RESEARCH class TestSaveResearch: """Tests for save_research tool.""" def test_saves_findings( self, session_manager, artifact_writer, context_monitor, active_sessions, sample_session_id, research_state, ) -> None: """save_research appends findings to artifact.""" # Setup: create session and initial research session_manager.create_session(sample_session_id) active_sessions[sample_session_id] = research_state artifact_writer.write_research(sample_session_id, "", task="Test") result = save_research( session_id=sample_session_id, findings="New finding: important discovery", session_manager=session_manager, artifact_writer=artifact_writer, context_monitor=context_monitor, sessions=active_sessions, ) assert "error" not in result content = artifact_writer.read_artifact(sample_session_id, "research.md") assert "important discovery" in content def test_returns_error_for_missing_session( self, session_manager, artifact_writer, context_monitor, active_sessions, ) -> None: """save_research returns error for non-existent session.""" result = save_research( session_id="nonexistent", findings="Test", session_manager=session_manager, artifact_writer=artifact_writer, context_monitor=context_monitor, sessions=active_sessions, ) assert result["error"] == "Session not found" assert result["code"] == "SESSION_NOT_FOUND" def test_returns_error_for_wrong_phase( self, session_manager, artifact_writer, context_monitor, active_sessions, sample_session_id, plan_state, ) -> None: """save_research returns error when not in research phase.""" session_manager.create_session(sample_session_id) active_sessions[sample_session_id] = plan_state result = save_research( session_id=sample_session_id, findings="Test", session_manager=session_manager, artifact_writer=artifact_writer, context_monitor=context_monitor, sessions=active_sessions, ) assert "error" in result assert result["code"] == "INVALID_PHASE" def test_returns_context_status( self, session_manager, artifact_writer, context_monitor, active_sessions, sample_session_id, research_state, ) -> None: """save_research includes context utilization in response.""" session_manager.create_session(sample_session_id) active_sessions[sample_session_id] = research_state artifact_writer.write_research(sample_session_id, "", task="Test") result = save_research( session_id=sample_session_id, findings="Test findings", session_manager=session_manager, artifact_writer=artifact_writer, context_monitor=context_monitor, sessions=active_sessions, ) assert "context" in result assert "utilization_percent" in result["context"]

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jamesctucker/pathfinder-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server