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():
|
if context.is_offline_mode():
|
||||||
run_migrations_offline()
|
run_migrations_offline()
|
||||||
else:
|
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())
|
asyncio.run(run_migrations_online())
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue