Spaces:
Build error
Build error
| import os | |
| import asyncio | |
| import pytest | |
| from app.database import init_db, SessionLocal | |
| from app.models import LogEntry, Task, ProjectMembership, Project, User, generate_user_id | |
| def _ensure_gemini_env(monkeypatch): | |
| # Prevent import-time failure in app.llm when GEMINI_API_KEY is missing | |
| monkeypatch.setenv("GEMINI_API_KEY", os.getenv("GEMINI_API_KEY", "test-key")) | |
| def setup_db(): | |
| """Drop and recreate all tables once per test session.""" | |
| from app.database import Base, engine | |
| # Drop all tables to ensure clean schema | |
| Base.metadata.drop_all(bind=engine) | |
| # Recreate with new schema | |
| init_db() | |
| yield | |
| def reset_db(setup_db): | |
| """Clean all rows before each test.""" | |
| db = SessionLocal() | |
| try: | |
| # Delete in dependency order to satisfy FKs | |
| db.query(LogEntry).delete() | |
| db.query(Task).delete() | |
| db.query(ProjectMembership).delete() | |
| db.query(Project).delete() | |
| db.query(User).delete() | |
| db.commit() | |
| yield | |
| finally: | |
| db.close() | |
| def db_session(): | |
| db = SessionLocal() | |
| try: | |
| yield db | |
| finally: | |
| db.close() | |
| def create_user(db_session): | |
| def _create(first_name: str, last_name: str): | |
| user_id = generate_user_id(first_name) | |
| u = User(id=user_id, first_name=first_name, last_name=last_name) | |
| db_session.add(u) | |
| db_session.commit() | |
| db_session.refresh(u) | |
| return u | |
| return _create | |