"""Unit tests for database configuration.""" import pytest from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine, async_sessionmaker from sqlalchemy import text from app.core.database import Base, get_db, init_db class TestDatabase: """Test cases for database configuration.""" @pytest.mark.asyncio async def test_create_tables(self, tmp_path): """Test creating database tables.""" db_path = tmp_path / "test.db" engine = create_async_engine( f"sqlite+aiosqlite:///{db_path}", echo=False ) async with engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) # Verify tables exist async with engine.begin() as conn: result = await conn.execute(text( "SELECT name FROM sqlite_master WHERE type='table'" )) tables = [row[0] for row in result.fetchall()] # At minimum, alembic_version table should exist after migration # For now, just verify the connection works assert len(tables) >= 0 await engine.dispose() @pytest.mark.asyncio async def test_get_db_session(self, tmp_path): """Test getting database session.""" db_path = tmp_path / "test.db" engine = create_async_engine( f"sqlite+aiosqlite:///{db_path}", echo=False ) async_session = async_sessionmaker( engine, class_=AsyncSession, expire_on_commit=False ) async with async_session() as session: assert isinstance(session, AsyncSession) await engine.dispose()