Fix async_client fixture to patch engine with in-memory DB

The fixture accepted in_memory_engine but never actually patched
database.engine or api.app.engine, causing tests to hit the real
SQLite path which fails in CI where data/ doesn't exist.
This commit is contained in:
Viktor Barzin 2026-02-10 22:49:34 +00:00
parent aa21e926bb
commit 909cb8e04b
No known key found for this signature in database
GPG key ID: 0EB088298288D958

View file

@ -165,25 +165,28 @@ async def async_client(
in_memory_engine: Engine, mock_user: User
) -> AsyncGenerator[AsyncClient, None]:
"""Create an AsyncClient for API testing with mock auth."""
from api.app import app
import database
import api.app as api_app
from api.auth import get_current_user
app = api_app.app
# Override dependencies
app.dependency_overrides[get_current_user] = lambda: mock_user
# Patch the engine used by the repository
original_engine = None
try:
from database import engine as db_engine
original_engine = db_engine
except Exception:
pass
# Patch the engine so the API uses the in-memory database
original_db_engine = database.engine
original_app_engine = api_app.engine
database.engine = in_memory_engine
api_app.engine = in_memory_engine
transport = ASGITransport(app=app)
async with AsyncClient(transport=transport, base_url="http://test") as client:
yield client
# Clean up dependency overrides
# Restore original engines and clean up
database.engine = original_db_engine
api_app.engine = original_app_engine
app.dependency_overrides.clear()