test(ptica): покрыть переиспользование сессии после close() в отдаче фотографий (#2464-C) #2930

Merged
bot-backend merged 1 commit from test/2464c-photos-session-reuse-after-close into main 2026-08-19 11:52:14 +00:00

1 commit

Author SHA1 Message Date
63170ff2f5 test(ptica): покрыть переиспользование сессии после close() в отдаче фотографий (#2464-C)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI / changes (pull_request) Successful in 9s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Successful in 1m56s
CI / backend-tests (pull_request) Successful in 16m5s
#2928 поставил db.close() выше по коду, а ниже сессия ещё раз работает с БД:
UPDATE thumb_path + commit в ветке генерации миниатюры из локального оригинала.
Поведение штатное — close() возвращает соединение в пул, следующий execute берёт
новое, — но проверял это только комментарий.

На проде ветка сегодня не исполняется ни разу: замер 19.08 по domrf_kn_photos —
0 строк с непустым local_path и пустым thumb_path (все 1889 закешированных уже
с миниатюрами). Значит первый же ленивый фетч новой фотографии пойдёт по коду,
который не проверял никто, и обычная эксплуатация дефект бы не показала.

Проверка читает результат ОТДЕЛЬНЫМ соединением, а не той же сессией: сессия
видит собственную незакоммиченную транзакцию, и пропажа commit() прошла бы мимо.
Фальсификация: с убранным db.commit() тест краснеет (assert None == ...webp).

Форматирование assert-сообщения — от pre-commit ruff 0.7.4, не моё (#2864).
2026-08-19 16:32:59 +05:00