from __future__ import annotations import unittest from tests.conftest import sample_events from discord_formatter import format_event, format_summary class DiscordFormatterTests(unittest.TestCase): def setUp(self) -> None: self.events = sample_events() def test_format_completed(self) -> None: formatted = format_event(self.events[2]) self.assertIsNotNone(formatted) self.assertIn("✅", formatted) self.assertIn("TASK-001", formatted) def test_format_failed(self) -> None: formatted = format_event(self.events[3]) self.assertIsNotNone(formatted) self.assertIn("❌", formatted) self.assertIn("Exploded with stack trace", formatted) def test_format_escalated(self) -> None: formatted = format_event(self.events[4]) self.assertIsNotNone(formatted) self.assertIn("🚨", formatted) self.assertIn("Human review required", formatted) def test_format_gated(self) -> None: formatted = format_event(self.events[5]) self.assertIsNotNone(formatted) self.assertIn("🔍", formatted) def test_format_started(self) -> None: formatted = format_event(self.events[1]) self.assertIsNotNone(formatted) self.assertIn("⚙️", formatted) self.assertIn("Worker: codex", formatted) def test_format_unknown_type(self) -> None: self.assertIsNone(format_event({"event_type": "task.unknown", "task_id": "TASK-999"})) def test_sanitize_control_chars(self) -> None: event = { "event_type": "task.failed", "task_id": "TASK-200", "message": "bad\x00news\x1b[31m!", } formatted = format_event(event) self.assertIsNotNone(formatted) self.assertNotIn("\x00", formatted) self.assertNotIn("\x1b", formatted) self.assertIn("bad news !", formatted) def test_sanitize_mentions(self) -> None: event = { "event_type": "task.escalated", "task_id": "TASK-201", "message": "@everyone investigate", } formatted = format_event(event) self.assertIsNotNone(formatted) self.assertIn("@\u200beveryone investigate", formatted) def test_format_summary(self) -> None: summary = format_summary([self.events[1], self.events[2], self.events[3]]) self.assertIn("3 events", summary) self.assertIn("task.completed: 1", summary) self.assertIn("task.failed: 1", summary) self.assertIn("task.started: 1", summary) if __name__ == "__main__": unittest.main()