Settings done right

This commit is contained in:
Eden Kirin
2023-09-21 08:37:44 +02:00
parent 27a449793c
commit ec306b38fe
6 changed files with 58 additions and 44 deletions

View File

@ -12,7 +12,10 @@ from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker
from app.lib import settings
from app.lib.sqlalchemy_plugin import DBConnectionSettings, create_db_engine
from app.lib.test_extras.db_setup import TestingDatabaseSetup
from app.lib.test_extras.db_setup import (
TestingDatabaseSetup,
TestingSettingsInitOptions,
)
from main import app
# A Guide To Database Unit Testing with Pytest and SQLAlchemy
@ -21,11 +24,11 @@ from main import app
engine = create_db_engine(
connection_settings=DBConnectionSettings(
username=settings.testing.DB_USER,
password=settings.testing.DB_PASSWORD,
host=settings.testing.DB_HOST,
port=settings.testing.DB_PORT,
database=settings.testing.DB_NAME,
username=settings.db.USER,
password=settings.db.PASSWORD,
host=settings.db.HOST,
port=settings.db.PORT,
database=settings.db.NAME,
)
)
@ -66,6 +69,18 @@ async def db_session() -> AsyncGenerator[AsyncSession, None]:
pytest_plugins = ()
db_options = TestingSettingsInitOptions(
DB_HOST=settings.db.HOST,
DB_PORT=settings.db.PORT,
DB_NAME=settings.db.NAME,
DB_USER=settings.db.USER,
DB_PASSWORD=settings.db.PASSWORD,
DB_TEMPLATE_NAME=settings.testing.DB_TEMPLATE_NAME,
DROP_DATABASE_BEFORE_TESTS=settings.testing.DROP_DATABASE_BEFORE_TESTS,
DROP_DATABASE_AFTER_TESTS=settings.testing.DROP_DATABASE_AFTER_TESTS,
)
@pytest.fixture(scope="function")
def async_client() -> AsyncTestClient:
return AsyncTestClient(app=app)
@ -73,12 +88,12 @@ def async_client() -> AsyncTestClient:
def pytest_configure(config: Config) -> None:
logging.info(f"Starting tests: {datetime.utcnow()}")
db_setup = TestingDatabaseSetup(options=settings.testing)
db_setup = TestingDatabaseSetup(db_options)
asyncio.run(db_setup.init_db())
print()
def pytest_unconfigure(config: Config) -> None:
logging.info(f"Ending tests: {datetime.utcnow()}")
db_setup = TestingDatabaseSetup(options=settings.testing)
db_setup = TestingDatabaseSetup(db_options)
asyncio.run(db_setup.tear_down_db())