"""Stammdaten-Seed (AP 1).""" from sqlalchemy import func, select from oamc.models import Klasse, Meisterschaft, Saison, Verein from oamc.models.enums import Kategorie from oamc.seeds import seed_saison_2026 def test_seed_ist_idempotent(db): z1 = seed_saison_2026(db) db.flush() z2 = seed_saison_2026(db) db.flush() assert z1["klasse"] == 18 # J1-J5 + S1-S9 + A1-A4 assert all(v == 0 for v in z2.values()) def test_seed_jugendklassen_haben_jahrgaenge(seed_2026): db = seed_2026 j1 = db.scalars(select(Klasse).where(Klasse.code == "J 1", Klasse.saison_jahr == 2026)).one() assert j1.kategorie == Kategorie.JUGEND assert j1.jahrgaenge == [2019, 2018, 2017] assert j1.mindestalter_am_veranstaltungstag == 7 def test_seed_saison_streichresultate(seed_2026): s = seed_2026.get(Saison, 2026) assert s.streichresultate_tabelle["12"] == 8 assert s.streichresultate_tabelle["4"] == 2 def test_seed_meisterschaft(seed_2026): db = seed_2026 ms = db.scalars(select(Meisterschaft).where(Meisterschaft.saison_jahr == 2026)).all() # genau EINE Meisterschaft pro Saison assert len(ms) == 1 assert ms[0].bezeichnung == "HTH-Meisterschaft 2026" # O-1: Platzhalter-Punktetabelle ist markiert assert "_hinweis" in ms[0].regelwerk from oamc.meisterschaft.berechnung import wertungen_fuer codes = {w.code for w in wertungen_fuer(db, ms[0].id)} assert "erwachsene" in codes and "J 3" in codes def test_seed_vereins_kurznamen(seed_2026): db = seed_2026 hainstadt = db.scalars(select(Verein).where(Verein.kurzname == "Hainstadt")).first() assert hainstadt is not None