import pytest from fastapi.testclient import TestClient from sqlalchemy.pool import StaticPool from sqlmodel import Session, SQLModel, create_engine from src import models from src.auth.auth import get_current_user from src.database import get_session from src.main import app from .fixtures import * @pytest.fixture def mock_session(mocker): session = mocker.Mock() def override(): return session app.dependency_overrides[get_session] = override yield session app.dependency_overrides.clear() @pytest.fixture def mock_user(): user = models.User(id=1, name='test user', email='test@user.com') def override(): return user app.dependency_overrides[get_current_user] = override yield user app.dependency_overrides.clear() @pytest.fixture def client(): return TestClient(app) @pytest.fixture(name='session') def session_fixture(): engine = create_engine( "sqlite://", connect_args={"check_same_thread": False}, poolclass=StaticPool, ) SQLModel.metadata.create_all(engine) connection = engine.connect() transaction = connection.begin() session = Session(bind=connection) try: yield session finally: transaction.rollback() session.close() connection.close() engine.dispose()