Use alembic in tests again?

pull/115/head
stijndcl 2022-06-29 00:25:51 +02:00
parent 5c1732d119
commit b4a3a87e6e
2 changed files with 12 additions and 3 deletions

View File

@ -68,4 +68,10 @@ async def run_migrations_online() -> None:
if context.is_offline_mode(): if context.is_offline_mode():
run_migrations_offline() run_migrations_offline()
else: else:
asyncio.run(run_migrations_online()) # Wonky way to use the Pytest event loop instead of another one
try:
loop = asyncio.get_running_loop()
if loop and loop.is_running():
loop.create_task(run_migrations_online())
except RuntimeError:
asyncio.run(run_migrations_online())

View File

@ -5,6 +5,7 @@ from unittest.mock import MagicMock
import pytest import pytest
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
from alembic import config, command
from database.engine import engine from database.engine import engine
from database.models import Base from database.models import Base
from didier import Didier from didier import Didier
@ -20,8 +21,10 @@ def event_loop() -> Generator:
@pytest.fixture(scope="session") @pytest.fixture(scope="session")
async def tables(event_loop): async def tables(event_loop):
"""Initialize a database before the tests, and then tear it down again""" """Initialize a database before the tests, and then tear it down again"""
async with engine.begin() as connection: alembic_config: config.Config = config.Config("alembic.ini")
await connection.run_sync(Base.metadata.create_all) command.upgrade(alembic_config, "head")
yield
command.downgrade(alembic_config, "base")
@pytest.fixture @pytest.fixture