Bénévole : retrait de la taille de t-shirt et du régime alimentaire
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
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
ccf3438eef
commit
609514369a
@@ -23,14 +23,12 @@ def test_create_volunteer_with_skills(client, edition):
|
||||
"first_name": "Alex",
|
||||
"last_name": "Martin",
|
||||
"email": "alex@ex.fr",
|
||||
"tshirt_size": "M",
|
||||
"skill_codes": ["SST", "PERMIS_B", "SST"],
|
||||
},
|
||||
)
|
||||
assert resp.status_code == 201
|
||||
body = resp.json()
|
||||
assert body["skill_codes"] == ["PERMIS_B", "SST"]
|
||||
assert body["tshirt_size"] == "M"
|
||||
assert body["edition_id"] == str(edition.id)
|
||||
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ def _mapping(dry_run: bool = False) -> ImportMapping:
|
||||
first_name="Prénom",
|
||||
last_name="Nom",
|
||||
email="Email",
|
||||
tshirt_size="Taille",
|
||||
skills="Compétences",
|
||||
),
|
||||
availability_columns=[
|
||||
@@ -78,7 +77,6 @@ def test_happy_path_creates_volunteers_skills_and_availabilities(session, editio
|
||||
|
||||
volunteers = {v.email: v for v in _volunteers(session, edition)}
|
||||
assert set(volunteers) == {"alex@ex.fr", "sam@ex.fr"}
|
||||
assert volunteers["alex@ex.fr"].tshirt_size.value == "M"
|
||||
assert {s.code for s in volunteers["alex@ex.fr"].skills} == {"SST", "PERMIS_B"}
|
||||
|
||||
avails = session.exec(
|
||||
@@ -194,18 +192,6 @@ def test_invalid_email_is_skipped(session, edition):
|
||||
assert report.rows[0].issues[0].code == "import.row.invalid_email"
|
||||
|
||||
|
||||
def test_unknown_tshirt_size_warns_and_still_imports(session, edition):
|
||||
report = run_import(
|
||||
session=session,
|
||||
edition=edition,
|
||||
table=_table([["Alex", "Martin", "a@ex.fr", "Large", "", "x", ""]]),
|
||||
mapping=_mapping(),
|
||||
)
|
||||
assert report.created == 1
|
||||
assert report.rows[0].issues[0].code == "import.row.invalid_tshirt_size"
|
||||
assert _volunteers(session, edition)[0].tshirt_size is None
|
||||
|
||||
|
||||
def test_unknown_availability_value_is_flagged(session, edition):
|
||||
report = run_import(
|
||||
session=session,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import pytest
|
||||
|
||||
from app.importing.text import slug_code, split_skills
|
||||
from app.importing.values import parse_availability_cell, parse_tshirt_size
|
||||
from app.models import AvailabilityStatus, TshirtSize
|
||||
from app.importing.values import parse_availability_cell
|
||||
from app.models import AvailabilityStatus
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
@@ -32,24 +32,6 @@ def test_unknown_cell_is_flagged():
|
||||
assert parse_availability_cell("bof") == (None, False)
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("raw", "expected"),
|
||||
[
|
||||
("M", TshirtSize.M),
|
||||
(" m ", TshirtSize.M),
|
||||
("xl", TshirtSize.XL),
|
||||
("2XL", TshirtSize.XXL),
|
||||
("3 XL", TshirtSize.XXXL),
|
||||
],
|
||||
)
|
||||
def test_tshirt_sizes(raw, expected):
|
||||
assert parse_tshirt_size(raw) is expected
|
||||
|
||||
|
||||
def test_unknown_tshirt_size_is_none():
|
||||
assert parse_tshirt_size("large") is None
|
||||
|
||||
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user