diff options
author | mike bayer <mike_mp@zzzcomputing.com> | 2021-05-20 21:36:04 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@ci3.zzzcomputing.com> | 2021-05-20 21:36:04 +0000 |
commit | 5a277a5d0ee13fd66d389631ac854556921613b8 (patch) | |
tree | ccb21973e9e3d1d1d5103b799d06232fcdf7b6bc /tests | |
parent | 8d5a9a1b0d32fff5726010afffa48cc0fb738238 (diff) | |
parent | acc82bff397be712a7e4f5e2069e7bfbf93ff5a9 (diff) | |
download | alembic-5a277a5d0ee13fd66d389631ac854556921613b8.tar.gz |
Merge "Remove unique/index flags when copying table"
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_autogen_indexes.py | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/tests/test_autogen_indexes.py b/tests/test_autogen_indexes.py index 6fda283..5ad65ba 100644 --- a/tests/test_autogen_indexes.py +++ b/tests/test_autogen_indexes.py @@ -8,6 +8,7 @@ from sqlalchemy import Index from sqlalchemy import Integer from sqlalchemy import MetaData from sqlalchemy import Numeric +from sqlalchemy import PrimaryKeyConstraint from sqlalchemy import String from sqlalchemy import Table from sqlalchemy import UniqueConstraint @@ -975,8 +976,34 @@ class AutogenerateUniqueIndexTest(AutogenFixtureTest, TestBase): eq_(diffs[0][0], "add_table") eq_(len(diffs), 1) - assert UniqueConstraint in set( - type(c) for c in diffs[0][1].constraints + + # checking for dupes also + eq_( + sorted( + [type(cons) for cons in diffs[0][1].constraints], + key=lambda c: c.__name__, + ), + [PrimaryKeyConstraint, UniqueConstraint], + ) + + @config.requirements.reflects_unique_constraints_unambiguously + def test_dont_add_uq_on_reverse_table_drop(self): + m1 = MetaData() + m2 = MetaData() + Table("no_uq", m1, Column("x", String(50), unique=True)) + diffs = self._fixture(m1, m2) + + eq_(diffs[0][0], "remove_table") + eq_(len(diffs), 1) + + # because the drop comes from reflection, the "unique=True" flag + # is lost in any case. + eq_( + sorted( + [type(cons) for cons in diffs[0][1].constraints], + key=lambda c: c.__name__, + ), + [PrimaryKeyConstraint, UniqueConstraint], ) def test_add_uq_ix_on_table_create(self): @@ -990,8 +1017,15 @@ class AutogenerateUniqueIndexTest(AutogenFixtureTest, TestBase): assert UniqueConstraint not in set( type(c) for c in diffs[0][1].constraints ) + eq_(diffs[1][0], "add_index") - eq_(diffs[1][1].unique, True) + d_table = diffs[0][1] + d_idx = diffs[1][1] + eq_(d_idx.unique, True) + + # check for dupes + eq_(len(diffs), 2) + assert not d_table.indexes def test_add_ix_on_table_create(self): m1 = MetaData() @@ -1293,6 +1327,11 @@ class NoUqReflectionIndexTest(NoUqReflection, AutogenerateUniqueIndexTest): "unique constraint reflection disabled for this suite" ) + def test_dont_add_uq_on_reverse_table_drop(self): + config.skip_test( + "unique constraint reflection disabled for this suite" + ) + def test_unique_not_reported(self): m1 = MetaData() Table( |