Meisterschaft: eine pro Saison, mit zugeordneten Turnieren
Auf Vorgabe des Auftraggebers umgestellt:
* genau eine Meisterschaft je Saison (unique auf saison_jahr)
* turnier.meisterschaft_id (nullable FK) statt bool zaehlt_meisterschaft;
NULL = "o. M.". Kompat-Property turnier.zaehlt_meisterschaft bleibt.
* Teilwertungen (Erwachsene-Gesamt, Jugend J1-J5) sind (Kategorie, Klasse)-
Sichten auf die eine Meisterschaft, keine eigenen Zeilen mehr
* meisterschaft_stand: kategorie + klasse_id + Unique je Wertung/Fahrer
* berechne_stand(kategorie=, klasse_id=), wertungen_fuer(), berechne_alle_wertungen()
* Read-API: /meisterschaften/{id}/stand[?wertung=], .../endlauf-qualifikation?wertung=
* Ingest: POST /turniere haengt zaehlende Turniere an die Jahres-Meisterschaft
* Initialmigration neu erzeugt (Projekt noch nicht ausgerollt); Seed: eine
"HTH-Meisterschaft <jahr>"
* Tests angepasst/ergaenzt (61 gruen)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -102,3 +102,36 @@ def test_finalisieren_setzt_status_final(client):
|
||||
r = client.post(f"/api/v1/turniere/{tid}/finalisieren", headers=HEAD)
|
||||
assert r.status_code == 200
|
||||
assert client.db.get(Turnier, tid).status.value == "final"
|
||||
|
||||
|
||||
def test_turnier_wird_an_jahresmeisterschaft_gehaengt(client):
|
||||
db = client.db
|
||||
seed_saison_2026(db)
|
||||
v = f.veranstaltung(db)
|
||||
db.flush()
|
||||
r = client.post("/api/v1/turniere", headers=HEAD, json={
|
||||
"veranstaltung_id": v.id, "name": "Reinheim", "zaehlt_meisterschaft": True,
|
||||
})
|
||||
assert r.status_code == 201, r.text
|
||||
m = f.meisterschaft(db)
|
||||
assert r.json()["meisterschaft_id"] == m.id
|
||||
|
||||
# o. M. -> keine Verknuepfung
|
||||
r2 = client.post("/api/v1/turniere", headers=HEAD, json={
|
||||
"veranstaltung_id": v.id, "name": "Pokal o. M.", "zaehlt_meisterschaft": False,
|
||||
})
|
||||
assert r2.json()["meisterschaft_id"] is None
|
||||
|
||||
|
||||
def test_meisterschaft_stand_liefert_alle_wertungen(client):
|
||||
db = client.db
|
||||
seed_saison_2026(db)
|
||||
m = f.meisterschaft(db)
|
||||
r = client.get(f"/api/v1/meisterschaften/{m.id}/stand")
|
||||
assert r.status_code == 200
|
||||
codes = {w["wertung"] for w in r.json()["wertungen"]}
|
||||
assert "erwachsene" in codes
|
||||
# eine einzelne Wertung gezielt abrufen
|
||||
r2 = client.get(f"/api/v1/meisterschaften/{m.id}/stand", params={"wertung": "J 3"})
|
||||
assert r2.status_code == 200
|
||||
assert r2.json()["wertung"] == "J 3"
|
||||
|
||||
Reference in New Issue
Block a user