# import asyncio # from typing import AsyncGenerator, Generator # import pytest # from httpx import AsyncClient # from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine # from sqlalchemy.orm import sessionmaker # from sqlalchemy.pool import StaticPool # from sqlalchemy_utils import database_exists, drop_database # from starlette.config import environ # from starlette.testclient import TestClient # # from src.database import Base, get_db # # from src.main import app # # Test database URL # TEST_DATABASE_URL = "sqlite+aiosqlite:///:memory:" # engine = create_async_engine( # TEST_DATABASE_URL, # connect_args={"check_same_thread": False}, # poolclass=StaticPool, # ) # async_session = sessionmaker( # engine, # class_=AsyncSession, # expire_on_commit=False, # autocommit=False, # autoflush=False, # ) # async def override_get_db() -> AsyncGenerator[AsyncSession, None]: # async with async_session() as session: # try: # yield session # await session.commit() # except Exception: # await session.rollback() # raise # finally: # await session.close() # app.dependency_overrides[get_db] = override_get_db # @pytest.fixture(scope="session") # def event_loop() -> Generator: # loop = asyncio.get_event_loop_policy().new_event_loop() # yield loop # loop.close() # @pytest.fixture(autouse=True) # async def setup_db() -> AsyncGenerator[None, None]: # async with engine.begin() as conn: # await conn.run_sync(Base.metadata.create_all) # yield # async with engine.begin() as conn: # await conn.run_sync(Base.metadata.drop_all) # @pytest.fixture # async def client() -> AsyncGenerator[AsyncClient, None]: # async with AsyncClient(app=app, base_url="http://test") as client: # yield client