fix(#190): задача 9 — добавить совпадающий по ключу документ в тесты 1/2
Ревью фикс-раунда 1: у old_file в обоих тестах был только один документ (account="62"), ключ которого не совпадал ни с одним документом нового файла (account="60") — _replaceable не находила совпадений, file_ids оставался пустым, и supersede_previous возвращала [] на раннем `if not file_ids: return []`, до locked/хука. Тесты не проверяли SUPERSEDED/SUPERSEDED_AFTER_CONFIRM, а падали бы с NoResultFound при реальном прогоне. Добавлен документ account="60" в old_file каждого теста — триггер замены файла; account="62" остаётся выпавшим документом, на котором проверяется факт исхода. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
5edcad6e9c
commit
9a1584281d
@ -1555,13 +1555,21 @@ async def test_supersede_previous_writes_superseded_fact_for_dropped_document(
|
|||||||
committed_sessionmaker: async_sessionmaker[AsyncSession],
|
committed_sessionmaker: async_sessionmaker[AsyncSession],
|
||||||
):
|
):
|
||||||
"""Задача 9 (Review Focus докс-плана): документ, выпавший из автозамены (ключа нет среди документов нового
|
"""Задача 9 (Review Focus докс-плана): документ, выпавший из автозамены (ключа нет среди документов нового
|
||||||
файла — OQ-154), не подтверждавшийся (`NEEDS_CHECK`) — факт исхода `SUPERSEDED`, без причины (вне матрицы §6)."""
|
файла — OQ-154), не подтверждавшийся (`NEEDS_CHECK`) — факт исхода `SUPERSEDED`, без причины (вне матрицы §6).
|
||||||
|
|
||||||
|
Фикс-раунд 1 ревью задачи 9: у `old_file` ОБЯЗАТЕЛЬНО должен быть документ, совпадающий по ключу с документом нового
|
||||||
|
файла (здесь — `old_60`/`new_60`, оба account="60") — иначе `_replaceable` не находит ни одного совпадения,
|
||||||
|
`file_ids` остаётся пустым, и `supersede_previous` возвращает `[]` на раннем `if not file_ids: return []`
|
||||||
|
ДО того, как доходит до `locked`/хука: файл не заменяется вовсе, и `_outcome_fact` на `old_62` упал бы с
|
||||||
|
`NoResultFound`. `old_60` сам не проверяется в этом тесте — он лишь триггер замены файла; выпавший документ
|
||||||
|
для assert — `old_62` (account="62", ключа которого нет среди документов нового файла)."""
|
||||||
maker = committed_sessionmaker
|
maker = committed_sessionmaker
|
||||||
async with maker() as session, session.begin():
|
async with maker() as session, session.begin():
|
||||||
entity = await make_legal_entity(session, name=OWNER_NAME, inn="7700000001")
|
entity = await make_legal_entity(session, name=OWNER_NAME, inn="7700000001")
|
||||||
old_file, old_job = await make_stored_file(
|
old_file, old_job = await make_stored_file(
|
||||||
session, entity=entity, status=FileStatus.PROCESSED, job_status=RecognitionStatus.done
|
session, entity=entity, status=FileStatus.PROCESSED, job_status=RecognitionStatus.done
|
||||||
)
|
)
|
||||||
|
await make_document(session, file=old_file, job=old_job, account="60") # триггер замены (совпадает по ключу)
|
||||||
old_62 = await make_document(
|
old_62 = await make_document(
|
||||||
session, file=old_file, job=old_job, account="62", status=DocumentStatus.NEEDS_CHECK
|
session, file=old_file, job=old_job, account="62", status=DocumentStatus.NEEDS_CHECK
|
||||||
)
|
)
|
||||||
@ -1590,7 +1598,12 @@ async def test_supersede_previous_writes_superseded_after_confirm_for_confirmed_
|
|||||||
):
|
):
|
||||||
"""Задача 9: автозамена подтверждённого документа — в отличие от удаления (задача 8), здесь нет 409-проверки,
|
"""Задача 9: автозамена подтверждённого документа — в отличие от удаления (задача 8), здесь нет 409-проверки,
|
||||||
блокирующей вручную подтверждённые документы, замена их не исключает. `confirmed_by` факта — из документа
|
блокирующей вручную подтверждённые документы, замена их не исключает. `confirmed_by` факта — из документа
|
||||||
(может быть не NULL, читается как есть, не считается всегда системным)."""
|
(может быть не NULL, читается как есть, не считается всегда системным).
|
||||||
|
|
||||||
|
Фикс-раунд 1 ревью задачи 9: как и в тесте выше, `old_file` должен иметь документ, совпадающий по ключу с документом
|
||||||
|
нового файла (`old_60`/`new_60`, account="60") — иначе файл не заменяется вовсе (`_replaceable` не находит
|
||||||
|
совпадений, `file_ids` пуст, ранний `return []`), и `_outcome_fact` на `old_62` упал бы с `NoResultFound`.
|
||||||
|
`old_62` (account="62", CONFIRMED) — выпавший документ, на котором проверяется `SUPERSEDED_AFTER_CONFIRM`."""
|
||||||
maker = committed_sessionmaker
|
maker = committed_sessionmaker
|
||||||
async with maker() as session, session.begin():
|
async with maker() as session, session.begin():
|
||||||
confirmer = (await session.execute(select(AppUser).order_by(AppUser.email).limit(1))).scalar_one()
|
confirmer = (await session.execute(select(AppUser).order_by(AppUser.email).limit(1))).scalar_one()
|
||||||
@ -1598,6 +1611,7 @@ async def test_supersede_previous_writes_superseded_after_confirm_for_confirmed_
|
|||||||
old_file, old_job = await make_stored_file(
|
old_file, old_job = await make_stored_file(
|
||||||
session, entity=entity, status=FileStatus.PROCESSED, job_status=RecognitionStatus.done
|
session, entity=entity, status=FileStatus.PROCESSED, job_status=RecognitionStatus.done
|
||||||
)
|
)
|
||||||
|
await make_document(session, file=old_file, job=old_job, account="60") # триггер замены (совпадает по ключу)
|
||||||
old_62 = await make_document(session, file=old_file, job=old_job, account="62", status=DocumentStatus.CONFIRMED)
|
old_62 = await make_document(session, file=old_file, job=old_job, account="62", status=DocumentStatus.CONFIRMED)
|
||||||
old_62.confirmed_by = confirmer.id
|
old_62.confirmed_by = confirmer.id
|
||||||
new_file, new_job = await make_stored_file(
|
new_file, new_job = await make_stored_file(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user