Champs `tshirt_size` et `diet` supprimés du modèle `Volunteer`, des schémas d'API, de l'import CSV/Excel (mapping, suggestions, exécution) et du jeu de démonstration. Énum `TshirtSize` et helper `parse_tshirt_size` supprimés. Migration 0005. Clé i18n `import.row.invalid_tshirt_size` retirée. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017uUsRg7XzopkCPWimwg9ZM
49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
import pytest
|
|
|
|
from app.importing.text import slug_code, split_skills
|
|
from app.importing.values import parse_availability_cell
|
|
from app.models import AvailabilityStatus
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("cell", "expected"),
|
|
[
|
|
("x", AvailabilityStatus.AVAILABLE),
|
|
("OUI", AvailabilityStatus.AVAILABLE),
|
|
(" Disponible ", AvailabilityStatus.AVAILABLE),
|
|
("si besoin", AvailabilityStatus.IF_NEEDED),
|
|
("Peut-être", AvailabilityStatus.IF_NEEDED),
|
|
("non", AvailabilityStatus.UNAVAILABLE),
|
|
("0", AvailabilityStatus.UNAVAILABLE),
|
|
],
|
|
)
|
|
def test_recognized_availability_values(cell, expected):
|
|
status, recognized = parse_availability_cell(cell)
|
|
assert recognized is True
|
|
assert status is expected
|
|
|
|
|
|
def test_empty_cell_is_recognized_but_no_declaration():
|
|
assert parse_availability_cell(" ") == (None, True)
|
|
assert parse_availability_cell("N/A") == (None, True)
|
|
|
|
|
|
def test_unknown_cell_is_flagged():
|
|
assert parse_availability_cell("bof") == (None, False)
|
|
|
|
|
|
def test_slug_code_is_stable_across_accents_and_case():
|
|
assert slug_code("Régie son") == "REGIE_SON"
|
|
assert slug_code(" permis B ") == "PERMIS_B"
|
|
assert slug_code("SST") == "SST"
|
|
|
|
|
|
def test_split_skills():
|
|
assert split_skills("SST, Permis B / régie son\nlangues") == [
|
|
"SST",
|
|
"Permis B",
|
|
"régie son",
|
|
"langues",
|
|
]
|
|
assert split_skills("") == []
|