"""Shared pytest fixtures and import-time guards for the backend test suite. pytest imports this file before any test module beneath backend/tests/, which makes it the only reliable place to install import-time guards: individual test modules cannot guarantee they run first, because collection order follows directory names. """ from __future__ import annotations import sys from unittest.mock import MagicMock # app/shared/bootstrap.py (the composition root) eagerly imports the Postgres # store modules, which do `import psycopg2` at their own module scope and later # open a real connection pool. Any test that transitively imports bootstrap # would therefore bind the real driver and attempt a live TCP connection to the # configured production database, surfacing as a multi-second timeout rather # than an obvious error. Binding mocks here — before the first test module is # imported — makes that impossible regardless of collection order. # setdefault (not assignment) keeps a real psycopg2 in place if something has # already imported it deliberately. _mock_psycopg2 = MagicMock() _mock_psycopg2.extras = MagicMock() sys.modules.setdefault("psycopg2", _mock_psycopg2) sys.modules.setdefault("psycopg2.extras", _mock_psycopg2.extras) sys.modules.setdefault("psycopg2.pool", MagicMock())