summaryrefslogtreecommitdiff
path: root/tests/test_autogen_diffs.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_autogen_diffs.py')
-rw-r--r--tests/test_autogen_diffs.py135
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)
+