import os
import sys
import unittest
from unittest.mock import patch

# companion/codex_notify.py does a bare `import attention_hook`, so companion/
# must be on sys.path for that import to resolve (mirrors how codex_notify.py
# is actually invoked as a script from within the companion/ directory).
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "companion"))

import codex_notify
import attention_hook


class PostCodexAttentionPlainTextTests(unittest.TestCase):
    def test_plain_text_stdin_is_forwarded_as_message(self):
        stdin_text = "Codex needs your attention on task X"
        captured = {}

        def fake_post_attention(payload, url):
            captured["payload"] = payload
            captured["url"] = url

        with patch.object(attention_hook, "post_attention", side_effect=fake_post_attention):
            codex_notify._post_codex_attention(stdin_text)

        self.assertIn("payload", captured)
        self.assertEqual(captured["payload"]["message"], stdin_text)


if __name__ == "__main__":
    unittest.main()
