"""Tests für src.database — SQLAlchemy-Engine und Session.""" from __future__ import annotations from sqlalchemy import inspect from src.database import Base, get_engine, get_session from src.models.spiel import SpielDB class TestDatabase: """Tests für die Datenbank-Schicht.""" def test_engine_is_available(self) -> None: """engine ist eine SQLAlchemy-Engine.""" engine = get_engine() assert engine is not None def test_session_ist_ernzeugbar(self) -> None: """session kann erstellt werden.""" session = get_session() assert session is not None session.close() def test_base_metadata_contains_spiel(self) -> None: """Base.metadata registriert spiele-Tabelle.""" engine = get_engine() inspector = inspect(engine) metadata_tables = set(inspector.get_table_names()) # Nach create_all in game_service sollte spiele existieren assert "spiele" in metadata_tables, f"Keine spiele-Tabelle in {metadata_tables}" def test_sqlalchemy_spiel_modell_erstellt(self) -> None: """SpielDB-Modell hat korrekte Spalten.""" assert hasattr(SpielDB, "name") assert hasattr(SpielDB, "min_spieler") assert hasattr(SpielDB, "max_spieler") assert hasattr(SpielDB, "dauer_min") assert hasattr(SpielDB, "komplexitaet") assert hasattr(SpielDB, "kategorie") def test_session_get_bind(self) -> None: """session.get_bind() gibt engine zurück.""" session = get_session() assert session.get_bind() is not None session.close()