Initial commit for new v2
This commit is contained in:
commit
d528369954
63 changed files with 7961 additions and 0 deletions
49
tests/conftest.py
Normal file
49
tests/conftest.py
Normal file
|
@ -0,0 +1,49 @@
|
|||
from typing import Generator
|
||||
|
||||
import pytest
|
||||
from fastapi.testclient import TestClient
|
||||
from sqlalchemy import orm
|
||||
|
||||
from app.database import Base
|
||||
from app.database import engine
|
||||
from app.database import get_db
|
||||
from app.main import app
|
||||
|
||||
_Session = orm.sessionmaker(bind=engine, autocommit=False, autoflush=False)
|
||||
|
||||
|
||||
def _get_db_for_testing() -> Generator[orm.Session, None, None]:
|
||||
session = _Session()
|
||||
try:
|
||||
yield session
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def db() -> Generator:
|
||||
Base.metadata.create_all(bind=engine)
|
||||
yield orm.scoped_session(orm.sessionmaker(bind=engine))
|
||||
try:
|
||||
Base.metadata.drop_all(bind=engine)
|
||||
except Exception:
|
||||
# XXX: for some reason, the teardown occasionally fails because of this
|
||||
pass
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def exclude_fastapi_middleware():
|
||||
"""Workaround for https://github.com/encode/starlette/issues/472"""
|
||||
user_middleware = app.user_middleware.copy()
|
||||
app.user_middleware = []
|
||||
app.middleware_stack = app.build_middleware_stack()
|
||||
yield
|
||||
app.user_middleware = user_middleware
|
||||
app.middleware_stack = app.build_middleware_stack()
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def client(db, exclude_fastapi_middleware) -> Generator:
|
||||
app.dependency_overrides[get_db] = _get_db_for_testing
|
||||
with TestClient(app) as c:
|
||||
yield c
|
Loading…
Add table
Add a link
Reference in a new issue