test: fige l'extraction des PDF réels en références golden

Les parseurs sont la partie la plus exposée aux régressions silencieuses :
un décalage de colonne ne lève aucune exception, il produit des montants
faux. Rien ne les couvrait jusqu'ici.

Chaque PDF du corpus local produit une empreinte (structure des lots,
totaux par lot, montants par catégorie, détail de chaque opération)
comparée à une référence figée. Les libellés sensibles — locataire,
fournisseur, description — sont réduits à un hash court : un changement
reste détecté sans recopier la donnée.

Ni les PDF (`data/`) ni les références (`tests/golden/`) ne sont
versionnés : la suite se saute d'elle-même là où le corpus est absent.
Régénération après un changement volontaire de parseur :

    uv run pytest tests/test_parsers_golden.py --regen-golden

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-26 09:43:16 +02:00
parent 41107c984c
commit 2ac7855cd5
2 changed files with 171 additions and 0 deletions

View File

@@ -5,6 +5,22 @@ import pytest
from plesna_gerance.database import connection
def pytest_addoption(parser):
"""Ajoute --regen-golden pour refiger les références des parseurs."""
parser.addoption(
"--regen-golden",
action="store_true",
default=False,
help="Réécrit les références de tests/golden au lieu de les comparer.",
)
@pytest.fixture
def regen_golden(request) -> bool:
"""Vrai quand la suite est lancée avec --regen-golden."""
return request.config.getoption("--regen-golden")
@pytest.fixture
def db_session(tmp_path, monkeypatch):
"""Session SQLAlchemy sur une base SQLite temporaire et isolée.