import unittest from detector.models import Alert from detector.notifier import InMemorySender, Notifier class TestNotifier(unittest.TestCase): def test_memory_notifier(self): notifier = Notifier.memory(["email", "webhook"]) alert = Alert(alert_id="a-1", dedup_key="h-1:r-1", aggregate_key="k", severity="critical", status="firing") delivered = notifier.notify(alert, ["email", "webhook", "dingtalk"]) self.assertEqual(delivered, ["email", "webhook"]) self.assertEqual(len(notifier.sent), 2) def test_in_memory_sender(self): sender = InMemorySender("email") alert = Alert(alert_id="a-2", dedup_key="d", aggregate_key="k", severity="warning", status="firing") self.assertTrue(sender.send(alert, "ops@example.com")) self.assertEqual(sender.sent[0]["target"], "ops@example.com") if __name__ == "__main__": unittest.main()