Spaces:
Sleeping
Sleeping
| """ | |
| Pytest Configuration and Fixtures | |
| """ | |
| import pytest | |
| from sqlalchemy import create_engine | |
| from sqlalchemy.orm import sessionmaker | |
| from fastapi.testclient import TestClient | |
| from app.core.database import Base | |
| from app.main import app | |
| from app.dependencies import get_db | |
| # Test database URL | |
| TEST_DATABASE_URL = "postgresql://swiftops:swiftops_dev@localhost:5432/swiftops_test_db" | |
| # Create test engine | |
| engine = create_engine(TEST_DATABASE_URL) | |
| TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) | |
| def db_engine(): | |
| """Create test database engine""" | |
| Base.metadata.create_all(bind=engine) | |
| yield engine | |
| Base.metadata.drop_all(bind=engine) | |
| def db_session(db_engine): | |
| """Create a new database session for each test""" | |
| connection = db_engine.connect() | |
| transaction = connection.begin() | |
| session = TestingSessionLocal(bind=connection) | |
| yield session | |
| session.close() | |
| transaction.rollback() | |
| connection.close() | |
| def client(db_session): | |
| """Create test client with database session override""" | |
| def override_get_db(): | |
| try: | |
| yield db_session | |
| finally: | |
| pass | |
| app.dependency_overrides[get_db] = override_get_db | |
| with TestClient(app) as test_client: | |
| yield test_client | |
| app.dependency_overrides.clear() | |