47 lines
1.6 KiB
Python
47 lines
1.6 KiB
Python
"""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()
|