mirror of https://github.com/stijndcl/didier
Use alembic in tests again?
parent
5c1732d119
commit
b4a3a87e6e
|
@ -68,4 +68,10 @@ async def run_migrations_online() -> None:
|
|||
if context.is_offline_mode():
|
||||
run_migrations_offline()
|
||||
else:
|
||||
# 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())
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue