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