"""Migration 0105's data step, DB-lane: a file in a source folder records that folder's key as its origin; a file in an own folder is left to be worked out, as before.""" from alembic import command from alembic.config import Config from sqlalchemy import text from app.db import engine def test_a_file_in_a_source_folder_records_its_origin(db, make_user): uid = make_user().id cfg = Config("alembic.ini") command.downgrade(cfg, "0104_job_ready_at") try: with engine.begin() as conn: def folder(kind, key, name): return conn.execute( text( "INSERT INTO file_folders (user_id, kind, source_key, name) VALUES" " (:u, :k, :s, :n) RETURNING id" ), {"u": uid, "k": kind, "s": key, "n": name}, ).scalar_one() def job(folder_id): return conn.execute( text( "INSERT INTO download_jobs (user_id, source_kind, source_ref," " profile_snapshot, status, folder_id) VALUES (:u, 'url', 'x', '{}'," " 'queued', :f) RETURNING id" ), {"u": uid, "f": folder_id}, ).scalar_one() in_source = job(folder("source", "site:vimeo.com", None)) in_own = job(folder("own", None, "Mine")) finally: command.upgrade(cfg, "head") with engine.connect() as conn: rows = dict(conn.execute(text("SELECT id, source_key FROM download_jobs")).all()) assert rows[in_source] == "site:vimeo.com" assert rows[in_own] is None