"""Fixtures partagées pour les tests. Freeze "today" pour des calculs déterministes ET installe un DATA_DIR temporaire unique pour tout le process de test, afin que tous les modules de tests (test_logs, test_security, ...) partagent le même stockage. """ import datetime as dt_module import tempfile from pathlib import Path import pytest import calcul import models # ── DATA_DIR unique pour tout le run ───────────────────────────────────────── _TMP = Path(tempfile.mkdtemp()) models.DATA_DIR = _TMP models.CONFIG_FILE = models.DATA_DIR / "config.json" models.CONFIG_FILE.write_text('{"heures_jour": 7.8, "allowed_email_domain": "x.fr"}') class FrozenDatetime(dt_module.datetime): _frozen = dt_module.datetime(2026, 7, 17, 10, 30) # vendredi @classmethod def today(cls): return cls._frozen @classmethod def now(cls, tz=None): return cls._frozen @pytest.fixture def freeze_today(monkeypatch): monkeypatch.setattr(calcul, "datetime", FrozenDatetime) return FrozenDatetime._frozen