plane-mode-scholar / tests /test_study_agent.py
PMS Sync
Deploy 000b308 (flattened for HF Spaces)
4577459
Raw
History Blame Contribute Delete
1.51 kB
"""Tests for autonomous study agent."""
from __future__ import annotations
import os
import unittest
from plane_mode_scholar.core.study_agent import AGENT_TOOLS, StudyAgent
from plane_mode_scholar.ingestion.pack_builder import PackBuilder
from plane_mode_scholar.storage.sqlite_store import SQLiteStore
class StudyAgentTests(unittest.TestCase):
def test_tools_defined(self) -> None:
names = {t["name"] for t in AGENT_TOOLS}
self.assertIn("ensure_pack", names)
self.assertIn("explain_topic", names)
self.assertIn("run_quiz", names)
def test_plan_prefers_session_start(self) -> None:
agent = StudyAgent()
plan = agent.plan_next_action("pack_x", "user", None)
self.assertEqual(plan["action"], "start_session")
def test_autopilot_yields_boot(self) -> None:
store = SQLiteStore()
pb = PackBuilder(store)
demo = os.path.normpath("plane_mode_scholar/data/demo_notes.txt")
if not os.path.exists(demo):
self.skipTest("demo notes missing")
result = pb.create_pack("Agent", "ML", file_paths=[demo], user_id="agent_user")
pack_id = result["pack"]["pack_id"]
agent = StudyAgent(store)
events = list(agent.run_autopilot("agent_user", pack_id, max_steps=1))
phases = [e["phase"] for e in events]
self.assertIn("BOOT", phases)
self.assertTrue(any(p in phases for p in ("PACK", "SESSION", "ERROR")))
if __name__ == "__main__":
unittest.main()