from alembic.config import Config
from alembic import command
import pytest
from sqlalchemy import create_engine, text
from sqlalchemy.orm import Session
from sqlalchemy.pool import NullPool
import os
from typing import Generator
from pgtemp_example_py import insert_task, list_tasks, complete_task
@pytest.fixture
def session() -> Generator[Session, None, None]:
db_url = os.environ["PGTEMP_NORMAL"]
engine = create_engine(db_url)
with engine.connect() as conn:
cfg = Config("alembic.ini")
cfg.set_main_option("sqlalchemy.url", db_url)
cfg.attributes["connection"] = conn
command.upgrade(cfg, "head")
yield Session(conn)
def test_basic_ops(session):
insert_task(session, "hello")
session.flush()
tasks = list_tasks(session)
session.flush()
assert len(tasks) == 1
t = tasks[0]
assert t.task == "hello"
assert t.completed is False
complete_task(session, t.id)
session.flush()
tasks = list_tasks(session)
assert len(tasks) == 1
t = tasks[0]
assert t.task == "hello"
assert t.completed is True