Skip to content

Commit 0ccdd74

Browse files
samuelclayclaude
andcommitted
Fix time-dependent briefing dispatch test that fails in CI overnight
The test_generate_all_dispatches_for_eligible test relied on wall clock time, only passing when CI ran after 8:25 AM Eastern. Mock datetime in the tasks module to pin UTC time to 20:00 (3 PM ET), ensuring the morning slot generation_time check always passes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent c5fac49 commit 0ccdd74

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

apps/briefing/tests.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1779,12 +1779,27 @@ def test_generate_all_skips_if_locked(self, mock_redis_cls):
17791779
GenerateBriefings()
17801780
# tests.py: If lock is held, nothing else should happen
17811781

1782+
@patch("apps.briefing.tasks.datetime")
17821783
@patch("apps.briefing.models.MBriefing")
17831784
@patch("apps.briefing.tasks.GenerateUserBriefing")
17841785
@patch("redis.Redis")
1785-
def test_generate_all_dispatches_for_eligible(self, mock_redis_cls, mock_user_task, mock_mbriefing):
1786+
def test_generate_all_dispatches_for_eligible(self, mock_redis_cls, mock_user_task, mock_mbriefing, mock_dt):
1787+
import datetime as real_dt
1788+
1789+
import pytz
1790+
17861791
from apps.briefing.tasks import GenerateBriefings
17871792

1793+
# tests.py: Pin to 3 PM ET (20:00 UTC) so the morning slot check always passes
1794+
fake_utc = real_dt.datetime(2026, 3, 5, 20, 0, 0)
1795+
mock_dt.datetime.utcnow.return_value = fake_utc
1796+
mock_dt.datetime.now.side_effect = lambda tz=None: (
1797+
pytz.utc.localize(fake_utc).astimezone(tz) if tz else fake_utc
1798+
)
1799+
mock_dt.datetime.combine = real_dt.datetime.combine
1800+
mock_dt.timedelta = real_dt.timedelta
1801+
mock_dt.time = real_dt.time
1802+
17881803
mock_r = MagicMock()
17891804
mock_redis_cls.return_value = mock_r
17901805
mock_r.set.return_value = True

0 commit comments

Comments
 (0)