From 7c4652ac49fd8659576eb01c64e1e24a03b9fced Mon Sep 17 00:00:00 2001 From: NuklearRabbit <145918611+NuklearRabbit@users.noreply.github.com> Date: Thu, 3 Sep 2026 01:11:07 +0200 Subject: [PATCH] fix: use local calendar dates in demo seed --- apps/jobs/services/demo_seed.py | 5 +++-- tests/integration/test_auth_login.py | 15 +++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/apps/jobs/services/demo_seed.py b/apps/jobs/services/demo_seed.py index a6ab5ab..94c75b4 100644 --- a/apps/jobs/services/demo_seed.py +++ b/apps/jobs/services/demo_seed.py @@ -152,6 +152,7 @@ def seed_demo_environment(user) -> None: profile.save(update_fields=["is_active"]) now = timezone.now() + today = timezone.localdate(now) workplace_map = { "hybrid": JobPosting.Workplace.HYBRID, "remote": JobPosting.Workplace.REMOTE, @@ -254,7 +255,7 @@ def seed_demo_environment(user) -> None: defaults={ "status": Application.Status.INTERVIEW, "applied_at": now - timedelta(days=6), - "follow_up_date": (now + timedelta(days=2)).date(), + "follow_up_date": today + timedelta(days=2), "contact_name": "Sofie Vandael", "contact_email": "sofie.vandael@cloudnexus.example", "notes": "Eerste gesprek gepland. Demo-data.", @@ -267,7 +268,7 @@ def seed_demo_environment(user) -> None: defaults={ "status": Application.Status.APPLIED, "applied_at": now - timedelta(days=2), - "follow_up_date": (now + timedelta(days=5)).date(), + "follow_up_date": today + timedelta(days=5), "notes": "Sollicitatie verstuurd. Demo-data.", }, ) diff --git a/tests/integration/test_auth_login.py b/tests/integration/test_auth_login.py index 1f52672..d8685ae 100644 --- a/tests/integration/test_auth_login.py +++ b/tests/integration/test_auth_login.py @@ -145,15 +145,22 @@ def test_demo_login_logs_in_and_seeds_environment(client): assert "minstens één import actief" in sources.content.decode("utf-8") -def test_demo_login_is_idempotent(client): - from datetime import timedelta +def test_demo_login_is_idempotent(client, monkeypatch): + from datetime import UTC, datetime, timedelta from django.utils import timezone from apps.jobs.models import Application, JobPosting + from apps.jobs.services import demo_seed from apps.profiles.models import SearchProfile from apps.sources.models import MailboxConnection, Source + # 22:30 UTC is already the following calendar day in Europe/Brussels. + # Freezing this boundary prevents UTC `.date()` calls from creeping back in. + near_local_midnight = datetime(2026, 9, 2, 22, 30, tzinfo=UTC) + monkeypatch.setattr(demo_seed.timezone, "now", lambda: near_local_midnight) + expected_local_day = timezone.localdate(near_local_midnight) + client.post(reverse("demo-login")) first = JobPosting.objects.count() demo_user = get_user_model().objects.get(username=settings.DEMO_USERNAME) @@ -172,8 +179,8 @@ def test_demo_login_is_idempotent(client): job.refresh_from_db() application.refresh_from_db() assert job.status == JobPosting.Status.ACTIVE - assert job.last_seen.date() == timezone.localdate() - assert application.follow_up_date > timezone.localdate() + assert timezone.localdate(job.last_seen) == expected_local_day + assert application.follow_up_date > expected_local_day assert profile.scores.count() == 6 assert MailboxConnection.objects.filter(user=demo_user, enabled=True).count() == 9 assert Source.objects.filter(source_type=Source.Type.EMAIL, failure_count=0).count() >= 9 -- 2.54.0