Files
ai-exchange/tests/unit/test_alert_silent_window_service.py
T
2026-05-12 01:17:52 +08:00

50 lines
1.6 KiB
Python

import unittest
from datetime import datetime, timezone
from src.services.alerts.alert_silent_window_service import AlertSilentWindowService
class AlertSilentWindowServiceTests(unittest.TestCase):
def test_build_status_reports_active_for_same_day_window(self) -> None:
service = AlertSilentWindowService()
now = datetime(2026, 5, 12, 3, 0, tzinfo=timezone.utc)
payload = service.build_status(
now=now,
enabled=True,
start_hour=0,
end_hour=6,
timezone_name="UTC",
)
self.assertTrue(payload["active"])
self.assertEqual(payload["reason"], "active")
self.assertEqual(payload["window_label"], "00:00-06:00")
self.assertIsNotNone(payload["next_allowed_ts"])
def test_build_status_reports_active_for_overnight_window(self) -> None:
service = AlertSilentWindowService()
now = datetime(2026, 5, 12, 2, 0, tzinfo=timezone.utc)
payload = service.build_status(
now=now,
enabled=True,
start_hour=22,
end_hour=6,
timezone_name="UTC",
)
self.assertTrue(payload["active"])
self.assertEqual(payload["window_label"], "22:00-06:00")
def test_build_status_reports_disabled(self) -> None:
service = AlertSilentWindowService()
payload = service.build_status(enabled=False, timezone_name="UTC")
self.assertFalse(payload["active"])
self.assertEqual(payload["reason"], "disabled")
if __name__ == "__main__":
unittest.main()