50 lines
1.6 KiB
Python
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()
|