diff --git a/migrations/versions/498e4ee72e00_add_session_id.py b/migrations/versions/498e4ee72e00_add_session_id.py index dcf991e..c41b2f1 100644 --- a/migrations/versions/498e4ee72e00_add_session_id.py +++ b/migrations/versions/498e4ee72e00_add_session_id.py @@ -18,9 +18,9 @@ def upgrade(): op.add_column('strike', sa.Column('session_id', sa.Integer(), nullable=True)) - op.create_foreign_key(None, 'strike', 'rental_session', ['session_id'], ['id']) + op.create_foreign_key('strike_session_id_fkey', 'strike', 'rental_session', ['session_id'], ['id']) def downgrade(): - op.drop_constraint(None, 'strike', type_='foreignkey') + op.drop_constraint('strike_session_id_fkey', 'strike', type_='foreignkey') op.drop_column('strike', 'session_id') diff --git a/tests/migrations/test_stairway.py b/tests/migrations/test_stairway.py new file mode 100644 index 0000000..f9b018b --- /dev/null +++ b/tests/migrations/test_stairway.py @@ -0,0 +1,25 @@ +import subprocess + +import pytest + + +def get_all_revisions(): + result = subprocess.run(["alembic", "history"], stdout=subprocess.PIPE, check=True) + lines = result.stdout.decode().splitlines() + revisions = [] + for line in lines: + if line and "->" in line: + rev = line.split("->")[0].strip() + if rev != "": + revisions.append(rev) + return list(reversed(revisions)) + + +@pytest.mark.parametrize("rev", get_all_revisions()) +def test_stairway_upgrade_downgrade(rev): + # upgrade к ревизии + subprocess.check_call(["alembic", "upgrade", rev]) + # downgrade на шаг + subprocess.check_call(["alembic", "downgrade", "-1"]) + # upgrade обратно + subprocess.check_call(["alembic", "upgrade", rev])