diff options
Diffstat (limited to 'tests/test_autogen_diffs.py')
-rw-r--r-- | tests/test_autogen_diffs.py | 135 |
1 files changed, 133 insertions, 2 deletions
diff --git a/tests/test_autogen_diffs.py b/tests/test_autogen_diffs.py index d176b91..ada6210 100644 --- a/tests/test_autogen_diffs.py +++ b/tests/test_autogen_diffs.py @@ -2,7 +2,8 @@ import sys from sqlalchemy import MetaData, Column, Table, Integer, String, Text, \ Numeric, CHAR, ForeignKey, INTEGER, Index, UniqueConstraint, \ - TypeDecorator, CheckConstraint, text, PrimaryKeyConstraint + TypeDecorator, CheckConstraint, text, PrimaryKeyConstraint, \ + ForeignKeyConstraint from sqlalchemy.types import NULLTYPE from sqlalchemy.engine.reflection import Inspector @@ -13,7 +14,7 @@ from alembic.testing import TestBase from alembic.testing import config from alembic.testing import assert_raises_message from alembic.testing.mock import Mock -from alembic.testing import eq_ +from alembic.testing import eq_, is_, is_not_ from alembic.util import CommandError from ._autogen_fixtures import AutogenTest, AutogenFixtureTest @@ -324,6 +325,10 @@ class AutogenerateDiffTest(ModelOne, AutogenTest, TestBase): eq_(diffs[10][0], 'remove_column') eq_(diffs[10][3].name, 'pw') + eq_(diffs[10][3].table.name, 'user') + assert isinstance( + diffs[10][3].type, String + ) def test_include_symbol(self): @@ -963,3 +968,129 @@ class PGCompareMetaData(ModelOne, AutogenTest, TestBase): eq_(diffs[5][0][0], 'modify_nullable') eq_(diffs[5][0][5], False) eq_(diffs[5][0][6], True) + + +class OrigObjectTest(TestBase): + def setUp(self): + self.metadata = m = MetaData() + t = Table( + 't', m, + Column('id', Integer(), primary_key=True), + Column('x', Integer()) + ) + self.ix = Index('ix1', t.c.id) + fk = ForeignKeyConstraint(['t_id'], ['t.id']) + q = Table( + 'q', m, + Column('t_id', Integer()), + fk + ) + self.table = t + self.fk = fk + self.ck = CheckConstraint(t.c.x > 5) + self.uq = UniqueConstraint(q.c.t_id) + self.pk = t.primary_key + + def test_drop_fk(self): + fk = self.fk + op = ops.DropConstraintOp.from_constraint(fk) + is_(op.to_constraint(), fk) + is_(op.reverse().to_constraint(), fk) + + def test_add_fk(self): + fk = self.fk + op = ops.AddConstraintOp.from_constraint(fk) + is_(op.to_constraint(), fk) + is_(op.reverse().to_constraint(), fk) + is_not_(None, op.to_constraint().table) + + def test_add_check(self): + ck = self.ck + op = ops.AddConstraintOp.from_constraint(ck) + is_(op.to_constraint(), ck) + is_(op.reverse().to_constraint(), ck) + is_not_(None, op.to_constraint().table) + + def test_drop_check(self): + ck = self.ck + op = ops.DropConstraintOp.from_constraint(ck) + is_(op.to_constraint(), ck) + is_(op.reverse().to_constraint(), ck) + is_not_(None, op.to_constraint().table) + + def test_add_unique(self): + uq = self.uq + op = ops.AddConstraintOp.from_constraint(uq) + is_(op.to_constraint(), uq) + is_(op.reverse().to_constraint(), uq) + is_not_(None, op.to_constraint().table) + + def test_drop_unique(self): + uq = self.uq + op = ops.DropConstraintOp.from_constraint(uq) + is_(op.to_constraint(), uq) + is_(op.reverse().to_constraint(), uq) + is_not_(None, op.to_constraint().table) + + def test_add_pk_no_orig(self): + op = ops.CreatePrimaryKeyOp('pk1', 't', ['x', 'y']) + pk = op.to_constraint() + eq_(pk.name, 'pk1') + eq_(pk.table.name, 't') + + def test_add_pk(self): + pk = self.pk + op = ops.AddConstraintOp.from_constraint(pk) + is_(op.to_constraint(), pk) + is_(op.reverse().to_constraint(), pk) + is_not_(None, op.to_constraint().table) + + def test_drop_pk(self): + pk = self.pk + op = ops.DropConstraintOp.from_constraint(pk) + is_(op.to_constraint(), pk) + is_(op.reverse().to_constraint(), pk) + is_not_(None, op.to_constraint().table) + + def test_drop_column(self): + t = self.table + + op = ops.DropColumnOp.from_column_and_tablename(None, 't', t.c.x) + is_(op.to_column(), t.c.x) + is_(op.reverse().to_column(), t.c.x) + is_not_(None, op.to_column().table) + + def test_add_column(self): + t = self.table + + op = ops.AddColumnOp.from_column_and_tablename(None, 't', t.c.x) + is_(op.to_column(), t.c.x) + is_(op.reverse().to_column(), t.c.x) + is_not_(None, op.to_column().table) + + def test_drop_table(self): + t = self.table + + op = ops.DropTableOp.from_table(t) + is_(op.to_table(), t) + is_(op.reverse().to_table(), t) + is_(self.metadata, op.to_table().metadata) + + def test_add_table(self): + t = self.table + + op = ops.CreateTableOp.from_table(t) + is_(op.to_table(), t) + is_(op.reverse().to_table(), t) + is_(self.metadata, op.to_table().metadata) + + def test_drop_index(self): + op = ops.DropIndexOp.from_index(self.ix) + is_(op.to_index(), self.ix) + is_(op.reverse().to_index(), self.ix) + + def test_create_index(self): + op = ops.CreateIndexOp.from_index(self.ix) + is_(op.to_index(), self.ix) + is_(op.reverse().to_index(), self.ix) + |