- Config ruff dans pyproject.toml : règles E/W/F/I/UP/B, whitelist des appels d'injection FastAPI (Depends/File/Form/Query) pour B008, B904 ignoré (traduction volontaire des exceptions en réponses HTTP) - Auto-fixes : tri des imports, suppression d'imports inutilisés, annotations PEP 604, f-strings sans placeholder, modes open redondants - Suppression de variables inutilisées (config.reset_setting, parser locataires) ruff check . : All checks passed ; 61 tests OK Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
"""Tests des helpers de stockage (chemins, sanitisation)."""
|
|
|
|
from datetime import date
|
|
|
|
import pytest
|
|
|
|
from plesna_gerance.database.storage import (
|
|
compute_document_paths,
|
|
extract_street_letter,
|
|
sanitize_filename,
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"adresse,expected",
|
|
[
|
|
("4 RUE SERVIENT", "S"),
|
|
("33 RUE MARC BLOCH", "M"),
|
|
("12 AVENUE JEAN JAURES", "J"),
|
|
("1 BOULEVARD GAMBETTA", "G"),
|
|
(None, "X"),
|
|
("", "X"),
|
|
("42", "X"), # que des chiffres -> rien d'alpha
|
|
],
|
|
)
|
|
def test_extract_street_letter(adresse, expected):
|
|
assert extract_street_letter(adresse) == expected
|
|
|
|
|
|
def test_sanitize_filename_removes_problematic_chars():
|
|
assert sanitize_filename('a/b:c*d?"e') == "a_b_c_d__e"
|
|
|
|
|
|
def test_sanitize_filename_strips_dots_and_spaces():
|
|
assert sanitize_filename(" .nom. ") == "nom"
|
|
|
|
|
|
def test_compute_document_paths():
|
|
pdf, json_p = compute_document_paths(
|
|
reference="REF-01234",
|
|
doc_date=date(2024, 1, 15),
|
|
immeuble_adresse="4 RUE SERVIENT",
|
|
)
|
|
assert pdf == "2024/S_REF-01234_2024-01-15.pdf"
|
|
assert json_p == "2024/S_REF-01234_2024-01-15.json"
|
|
|
|
|
|
def test_compute_document_paths_unknown_address():
|
|
pdf, _ = compute_document_paths("R1", date(2023, 7, 9), None)
|
|
assert pdf == "2023/X_R1_2023-07-09.pdf"
|