# ============================================ # Projet : API-KA # Fichier : tests/conftest.py # Node : m3u96b # Author : Simon-Pierre Boucher # Contact : contact@spboucher.ai # Date : 2026-08-16 # ============================================ """Fixtures pytest : environnement de test (SQLite temporaire) et base initialisée. L'environnement est configuré au chargement du module, AVANT tout import de ``src.*`` par les modules de test, afin que ``get_settings()`` lise les bonnes valeurs dès le premier appel. """ from __future__ import annotations import os import tempfile _TMP_DIR = tempfile.mkdtemp(prefix="apika-tests-") os.environ["APP_ENV"] = "test" os.environ["DATABASE_URL"] = f"sqlite:///{_TMP_DIR}/apika_test.db" for _svc in ("LOUKA", "IMMOKA", "FOODKA", "AUTOKA", "FABRIKA"): os.environ[f"{_svc}_SOURCE_URL"] = f"https://example.test/{_svc.lower()}" import pytest # noqa: E402 from src.config import get_settings # noqa: E402 get_settings.cache_clear() from src.database import db as db_module # noqa: E402 db_module.reset_engine() db_module.init_db() @pytest.fixture() def db_session(): """Session SQLAlchemy transactionnelle sur la base de test.""" with db_module.session_scope() as session: yield session @pytest.fixture(autouse=True) def no_backup(monkeypatch: pytest.MonkeyPatch): """Neutralise les backups disque pendant les tests de collecteurs.""" monkeypatch.setattr( "src.collectors.base_collector.backup_service", lambda *args, **kwargs: None )