""" Pytest fixtures for all tests """ import os import pytest from pathlib import Path from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from src.database.models import Base from src.database.session import db_manager @pytest.fixture def db_session(): """Create an in-memory SQLite database for unit testing""" engine = create_engine("sqlite:///:memory:") Base.metadata.create_all(engine) Session = sessionmaker(bind=engine) session = Session() yield session session.close() @pytest.fixture(scope="session", autouse=True) def setup_test_database(): """Set up a separate test database for integration tests""" test_db_path = Path("test_content_automation.db") original_db_url = os.environ.get("DATABASE_URL") os.environ["DATABASE_URL"] = f"sqlite:///{test_db_path}" db_manager._engine = None db_manager._session_factory = None db_manager.initialize() engine = db_manager.get_engine() Base.metadata.create_all(engine) yield db_manager.close() if test_db_path.exists(): test_db_path.unlink() if original_db_url: os.environ["DATABASE_URL"] = original_db_url elif "DATABASE_URL" in os.environ: del os.environ["DATABASE_URL"]