Spaces:
Sleeping
Sleeping
File size: 1,620 Bytes
7ffe51d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
"""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
@pytest.fixture(name="session")
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
@pytest.fixture(name="client")
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()
@pytest.fixture(name="test_user")
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
@pytest.fixture(name="test_task")
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
|