"""Pytest-Konfiguration: Redis-Mock und Datenbank-Reset.""" from __future__ import annotations import sys import unittest.mock as mock import fakeredis import pytest from src.database import Base, _engine # --- Fake redis module that provides real-like exceptions --- import redis as _real_redis class _FakeRedis: """Wraps fakeredis with the correct redis.exceptions hierarchy.""" @staticmethod def exceptions(): return _real_redis.exceptions def __init__(self, *args, **kwargs): self._conn = fakeredis.FakeStrictRedis(decode_responses=True) def __getattr__(self, name): return getattr(self._conn, name) @property def exceptions(self): return _real_redis.exceptions # Install BEFORE any app code runs sys.modules["redis"] = mock.MagicMock() sys.modules["redis"].Redis = _FakeRedis sys.modules["redis"].exceptions = _real_redis.exceptions @pytest.fixture(autouse=True) def reset_db() -> None: """Setzt die Datenbank vor jedem Test zurueck.""" Base.metadata.drop_all(bind=_engine) Base.metadata.create_all(bind=_engine)