deeep-sec's picture
feat: institutional campus placement eligibility & interview scheduling engine
788eab4 verified
Raw History Blame Contribute Delete
1.81 kB
"""
Pytest configuration and test fixtures.
Provides an isolated, in-memory SQLite database configured with foreign keys and WAL mode.
"""
from collections.abc import Generator
# Preload ortools native DLLs before pandas/openpyxl to guarantee clean Windows DLL resolution
try:
from ortools.sat.python import cp_model as _cp_model # noqa: F401
except Exception:
pass
import pytest
from sqlalchemy import create_engine, event
from sqlalchemy.engine import Engine
from sqlalchemy.orm import Session, sessionmaker
import backend.app.storage.models # noqa: F401
from backend.app.storage.database import Base
from backend.app.storage.repositories.sqlalchemy_repo import SqlAlchemyUnitOfWork
@pytest.fixture
def test_engine() -> Engine:
engine = create_engine(
"sqlite:///:memory:",
connect_args={"check_same_thread": False},
)
@event.listens_for(engine, "connect")
def set_sqlite_pragma(dbapi_connection: object, connection_record: object) -> None:
if hasattr(dbapi_connection, "cursor"):
cursor = dbapi_connection.cursor() # type: ignore
cursor.execute("PRAGMA foreign_keys=ON")
cursor.close()
Base.metadata.create_all(bind=engine)
return engine
@pytest.fixture
def db_session(test_engine: Engine) -> Generator[Session, None, None]:
connection = test_engine.connect()
transaction = connection.begin()
session = Session(bind=connection)
yield session
session.close()
transaction.rollback()
connection.close()
@pytest.fixture
def test_uow(test_engine: Engine) -> SqlAlchemyUnitOfWork:
session_factory = sessionmaker(bind=test_engine, autocommit=False, autoflush=False)
return SqlAlchemyUnitOfWork(session_factory)