diff --git a/CHANGELOG.md b/CHANGELOG.md index 352fbbb..238af9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12737,3 +12737,34 @@ Neste steg: **Rullet ut:** venter på bekreftelse (migrasjon 085 mot ekte `teecup_db` krever egen bekreftelse, se CLAUDE.md). + +118. **`name`/`start_date`/`end_date` gjort PATCH-bare + org-oppsettet + sitt store gjenstående gap kartlagt -- 2026-08-18.** Bruker: "HVOR + er grensesnittet for å sette opp alle parametrene når det gjelder + en turnering? ... Vi mangler jo nesten alt." Undersøkt: `name`/ + `start_date`/`end_date` var IKKE en gang i `TournamentUpdate`- + modellen (kolonnene har eksistert siden migrasjon 001/006, aldri + PATCH-bare). `visibility`/`description`/`registration_deadline`/ + `registration_capacity`/`registration_overflow_policy`/ + `registration_requires_approval` derimot: FULLT fungerende backend + (ekte påmeldingsfrist-/kapasitet-/venteliste-/godkjenning-logikk i + `registration.py`), men INGEN UI noe sted til å sette dem -- en + ferdigbygd funksjon ingen organisator kan nå. Kun `hero_image` + (Presentasjon-fanen) og de allerede bygde kortene (scoringsmetode/ + runder/cut/tiebreak/klasser/deltakere) var reelt dekket. + + La kun til `name`/`start_date`/`end_date` i `TournamentUpdate` + (samme generiske PATCH-endepunkt som resten) -- selve UI-en for + HELE denne innstillings-samlingen er bevisst IKKE håndkodet (dette + er en ny, betydelig UI-flate, ikke en liten tilføyelse til et + allerede håndkodet kort, se [[feedback_frontend_via_v0]]). V0-prompt + skrevet og levert til bruker samme dag for en ny + `TournamentSettingsCard` øverst i Oppsett-fanen, IKKE bygget ennå. + + **Verifisert:** to nye backend-tester i `tests/test_tournament_ + update.py` (navn/datoer, samt en eksplisitt bekreftelse på at + påmeldings-/synlighets-feltene FAKTISK var funksjonelle bak + kulissene hele tiden) -- 137/137 grønt (opp fra 135). + + **Rullet ut:** venter på bekreftelse (ren backend-tillegg, ingen + migrasjon -- kolonnene fantes allerede). diff --git a/app/routers/tournaments.py b/app/routers/tournaments.py index 342e967..ee888fb 100644 --- a/app/routers/tournaments.py +++ b/app/routers/tournaments.py @@ -201,6 +201,16 @@ class TournamentUpdate(BaseModel): """Alle felt valgfrie -- kun de som faktisk sendes med blir endret (PATCH-semantikk via Pydantic sin exclude_unset, se update_tournament).""" + # name/start_date/end_date (2026-08-18) -- kolonnene har eksistert + # siden 001/006, men INGEN UI har noensinne hatt en vei til å SETTE + # dem (ADR-030 sin kommentar i list_tournaments dokumenterer nettopp + # dette -- "ingen UI noensinne har hatt en vei til å SETTE" start_date/ + # end_date, alltid utledet fra økter i stedet). Lagt til her etter at + # bruker påpekte at org-oppsettet generelt mangler nesten alle + # turnering-parametrene en organisator faktisk trenger. + name: str | None = Field(default=None, min_length=1, max_length=200) + start_date: date | None = None + end_date: date | None = None status: str | None = Field(default=None, pattern="^(draft|active|completed|archived)$") visibility: str | None = Field(default=None, pattern="^(public|org|participants)$") format_type: str | None = Field(default=None, pattern="^(team|individual)$") diff --git a/tests/test_tournament_update.py b/tests/test_tournament_update.py new file mode 100644 index 0000000..3bbee20 --- /dev/null +++ b/tests/test_tournament_update.py @@ -0,0 +1,57 @@ +""" +Turneringsnavn/-datoer (2026-08-18) -- kolonnene har eksistert siden +migrasjon 001/006, men ingen UI har noensinne hatt en vei til å SETTE +dem via PATCH før nå (se update_tournament sin docstring-kommentar). +Lagt til etter at bruker påpekte at org-oppsettet mangler de fleste +turnering-parametrene en organisator faktisk trenger. +""" + +from datetime import date + +from app.routers.tournaments import TournamentUpdate, update_tournament + +from tests.conftest import create_org, create_tournament + + +async def test_update_name_and_dates(pool): + org_id = await create_org() + tournament_id = await create_tournament(org_id, name="Opprinnelig navn") + + updated = await update_tournament( + tournament_id, + TournamentUpdate( + name="Nytt navn", + start_date=date(2026, 9, 1), + end_date=date(2026, 9, 3), + ), + organization_id=org_id, + ) + assert updated.name == "Nytt navn" + assert updated.start_date == date(2026, 9, 1) + assert updated.end_date == date(2026, 9, 3) + + +async def test_update_registration_and_visibility_fields(pool): + """Bekrefter at feltene som allerede er fullt fungerende i + registration.py (påmeldingsfrist/kapasitet/venteliste/godkjenning) + faktisk lar seg sette via PATCH -- de manglet kun UI, ikke + backend-støtte.""" + org_id = await create_org() + tournament_id = await create_tournament(org_id) + + updated = await update_tournament( + tournament_id, + TournamentUpdate( + visibility="public", + description="En testturnering", + registration_capacity=40, + registration_overflow_policy="waitlist", + registration_requires_approval=True, + ), + organization_id=org_id, + ) + assert updated.visibility == "public" + assert updated.description == "En testturnering" + assert updated.registration_capacity == 40 + assert updated.registration_overflow_policy == "waitlist" + assert updated.registration_requires_approval is True