"""Shared test fixtures (SQLite memory DB session factory).""" from __future__ import annotations from collections.abc import AsyncGenerator import pytest_asyncio from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine import app.db.models # noqa: F401 # register ORM tables on Base.metadata from app.db.base import Base @pytest_asyncio.fixture async def sqlite_session_factory() -> AsyncGenerator[async_sessionmaker[AsyncSession], None]: """In-memory SQLite + create_all; yields async_sessionmaker suitable for injection.""" engine = create_async_engine("sqlite+aiosqlite:///:memory:") async with engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) factory = async_sessionmaker( engine, class_=AsyncSession, expire_on_commit=False, autoflush=False, autobegin=False, ) yield factory await engine.dispose()