"""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_meisterschaften(seed_2026): db = seed_2026 ms = db.scalars(select(Meisterschaft).where(Meisterschaft.saison_jahr == 2026)).all() bezeichnungen = {m.bezeichnung for m in ms} assert "HTH Erwachsene 2026" in bezeichnungen assert "HTH Jugend J 3 2026" in bezeichnungen # O-1: Platzhalter-Punktetabelle ist markiert erw = next(m for m in ms if m.bezeichnung == "HTH Erwachsene 2026") assert "_hinweis" in erw.regelwerk 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