Big-Link-Man/tests/conftest.py

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"]