51 lines
1.3 KiB
Python
51 lines
1.3 KiB
Python
"""
|
|
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"]
|