Coverage for app/tests/conftest.py: 100%

30 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2026-03-24 11:40 +0000

1from collections.abc import Generator 

2 

3import pytest 

4from fastapi.testclient import TestClient 

5from sqlmodel import Session, delete 

6 

7from app.core.config import settings 

8from app.core.db import engine, init_db 

9from app.main import app 

10from app.models import Item, Priority, Task, User 

11from app.tests.utils.user import authentication_token_from_email 

12from app.tests.utils.utils import get_superuser_token_headers 

13 

14 

15@pytest.fixture(scope="session", autouse=True) 

16def db() -> Generator[Session, None, None]: 

17 with Session(engine) as session: 

18 init_db(session) 

19 yield session 

20 session.execute(delete(Task)) 

21 session.execute(delete(Item)) 

22 session.execute(delete(Priority)) 

23 session.execute(delete(User)) 

24 session.commit() 

25 

26 

27@pytest.fixture(scope="module") 

28def client() -> Generator[TestClient, None, None]: 

29 with TestClient(app) as c: 

30 yield c 

31 

32 

33@pytest.fixture(scope="module") 

34def superuser_token_headers(client: TestClient) -> dict[str, str]: 

35 return get_superuser_token_headers(client) 

36 

37 

38@pytest.fixture(scope="module") 

39def normal_user_token_headers(client: TestClient, db: Session) -> dict[str, str]: 

40 return authentication_token_from_email( 

41 client=client, email=settings.EMAIL_TEST_USER, db=db 

42 )