import pytest
import sqlalchemy as sa
from fastapi.testclient import TestClient
from app.main import app
from app.core.db import SessionLocal
from app.models.models import User, UserSession, UserActivity


@pytest.fixture(scope="module")
def client():
    # Clean up auth-related tables before tests
    with SessionLocal() as session:
        session.exec(sa.delete(UserSession))
        session.exec(sa.delete(UserActivity))
        session.exec(sa.delete(User))
        session.commit()

    client = TestClient(app)
    yield client

    # Teardown: clean up created test data
    with SessionLocal() as session:
        session.exec(sa.delete(UserSession))
        session.exec(sa.delete(UserActivity))
        session.exec(sa.delete(User))
        session.commit()
