From 0413d59b89b965e5eb8482ca3efb77998efb715e Mon Sep 17 00:00:00 2001 From: Light1YT Date: Tue, 30 Jun 2026 14:33:16 +0500 Subject: [PATCH] =?UTF-8?q?test(quarter-dump):=20un-rot=20freshness=20date?= =?UTF-8?q?-bomb=20(hardcoded=202026-01-01=20=E2=86=92=20now=E2=88=921d)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit test_nspd_path_used_when_zouit_count_nonzero хардкодил dump fetched_at = datetime(2026, 1, 1) как «свежий». С 2026-06-30 разница превысила _DUMP_MAX_AGE_DAYS=180 → код уходил в stale-ветку (_trigger_harvest → _empty_unavailable) → nspd_zouit_overlaps=[] → assert 0 == 1. Не регрессия этой ветки: PR #2101 был frontend-only (backend-tests не гонял полный suite), PR-B — первый backend-PR после пересечения порога, поэтому date-bomb всплыл здесь. Свежесть теперь относительна now (now − 1 день) — устойчиво к дате прогона. --- backend/tests/services/test_quarter_dump_lookup.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/backend/tests/services/test_quarter_dump_lookup.py b/backend/tests/services/test_quarter_dump_lookup.py index 87ef06a1..43ef1aae 100644 --- a/backend/tests/services/test_quarter_dump_lookup.py +++ b/backend/tests/services/test_quarter_dump_lookup.py @@ -685,12 +685,15 @@ def test_nspd_path_used_when_zouit_count_nonzero() -> None: Проверяем source='nspd-quarter-dump' (не cad_zouit). """ # Строка дампа: все поля через MagicMock - from datetime import UTC, datetime + from datetime import UTC, datetime, timedelta dump_row = MagicMock() dump_row.__getitem__ = lambda self, i: [ "66:41:0603016", # quarter_cad - datetime(2026, 1, 1, tzinfo=UTC), # fetched_at_utc (свежий) + # Свежесть ОТНОСИТЕЛЬНО now: был хардкод datetime(2026, 1, 1) → date-bomb + # (с 2026-06-30 перевалил _DUMP_MAX_AGE_DAYS=180 → stale-ветка → _trigger_harvest + # → _empty_unavailable → overlaps=[] → assert 0 == 1). now − 1 день всегда свеж. + datetime.now(UTC) - timedelta(days=1), # fetched_at_utc (свежий) 100, # total_features None, # harvest_error 1, # territorial_zones_count