"""Pytest configuration and fixtures""" import pytest from fastapi.testclient import TestClient from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from app.main import app from app.core.database import Base, get_db # Test database (in-memory SQLite) SQLALCHEMY_DATABASE_URL = "sqlite:///:memory:" engine = create_engine( SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False} ) TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) @pytest.fixture(scope="function") def test_db(): """Create test database tables""" Base.metadata.create_all(bind=engine) yield Base.metadata.drop_all(bind=engine) @pytest.fixture(scope="function") def db_session(test_db): """Get test database session""" session = TestingSessionLocal() try: yield session finally: session.close() @pytest.fixture(scope="function") def client(test_db): """Get test client with overridden database""" def override_get_db(): try: db = TestingSessionLocal() yield db finally: db.close() app.dependency_overrides[get_db] = override_get_db yield TestClient(app) app.dependency_overrides.clear()