Files
hermes-agent/tests/test_cli_plan_command.py
2026-03-14 20:54:23 -07:00

42 lines
1.3 KiB
Python

"""Tests for the /plan CLI slash command."""
from unittest.mock import MagicMock
from cli import HermesCLI
def _make_cli():
cli_obj = HermesCLI.__new__(HermesCLI)
cli_obj.config = {}
cli_obj.console = MagicMock()
cli_obj.agent = None
cli_obj.conversation_history = []
cli_obj.session_id = "sess-123"
cli_obj._pending_input = MagicMock()
return cli_obj
class TestCLIPlanCommand:
def test_plan_command_queues_plan_mode_message(self, tmp_path, monkeypatch):
monkeypatch.setenv("HERMES_HOME", str(tmp_path))
cli_obj = _make_cli()
result = cli_obj.process_command("/plan Add OAuth login")
assert result is True
cli_obj._pending_input.put.assert_called_once()
queued = cli_obj._pending_input.put.call_args[0][0]
assert '"/plan" command' in queued
assert "Add OAuth login" in queued
assert str(tmp_path / "plans") in queued
def test_plan_without_args_uses_conversation_context(self, tmp_path, monkeypatch):
monkeypatch.setenv("HERMES_HOME", str(tmp_path))
cli_obj = _make_cli()
cli_obj.process_command("/plan")
queued = cli_obj._pending_input.put.call_args[0][0]
assert "current conversation context" in queued
assert "conversation-plan" in queued