Spaces:
Sleeping
Sleeping
| """Test configuration and fixtures.""" | |
| import pytest | |
| from sqlmodel import Session, SQLModel, create_engine | |
| from sqlmodel.pool import StaticPool | |
| from fastapi.testclient import TestClient | |
| from src.main import app | |
| from src.api.deps import get_db | |
| from src.models.user import User | |
| from src.models.task import Task | |
| def session_fixture(): | |
| """Create a fresh database session for each test.""" | |
| engine = create_engine( | |
| "sqlite:///:memory:", | |
| connect_args={"check_same_thread": False}, | |
| poolclass=StaticPool, | |
| ) | |
| SQLModel.metadata.create_all(engine) | |
| with Session(engine) as session: | |
| yield session | |
| def client_fixture(session: Session): | |
| """Create a test client with overridden database session.""" | |
| def get_db_override(): | |
| yield session | |
| app.dependency_overrides[get_db] = get_db_override | |
| client = TestClient(app) | |
| yield client | |
| app.dependency_overrides.clear() | |
| def test_user_fixture(session: Session): | |
| """Create a test user.""" | |
| user = User( | |
| email="test@example.com", | |
| name="Test User" | |
| ) | |
| session.add(user) | |
| session.commit() | |
| session.refresh(user) | |
| return user | |
| def test_task_fixture(session: Session, test_user: User): | |
| """Create a test task.""" | |
| task = Task( | |
| user_id=test_user.id, | |
| title="Test Task", | |
| description="Test Description", | |
| completed=False | |
| ) | |
| session.add(task) | |
| session.commit() | |
| session.refresh(task) | |
| return task | |