]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- move tests for unique constraints to dialect suite, including
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 3 Dec 2013 20:57:08 +0000 (15:57 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 3 Dec 2013 20:57:08 +0000 (15:57 -0500)
requirements etc., just like 0.9

lib/sqlalchemy/testing/requirements.py
lib/sqlalchemy/testing/suite/test_reflection.py
test/engine/test_reflection.py
test/requirements.py

index b44cc778f71720ea85d290f6b5fd362046ba9944..f89d469eaf1ccb4290fdde2cbef7220d81927a03 100644 (file)
@@ -270,6 +270,11 @@ class SuiteRequirements(Requirements):
     def index_reflection(self):
         return exclusions.open()
 
+    @property
+    def unique_constraint_reflection(self):
+        """target dialect supports reflection of unique constraints"""
+        return exclusions.open()
+
     @property
     def unbounded_varchar(self):
         """Target database must support VARCHAR with no length"""
index 8524ab66c4f74dfce148c77eb31977c2886956f3..cb1d974e009f451ec253d190894a40cc305b4405 100644 (file)
@@ -11,7 +11,7 @@ from sqlalchemy.testing.schema import Table, Column
 from sqlalchemy.testing import eq_, assert_raises_message
 from sqlalchemy import testing
 from .. import config
-
+import operator
 from sqlalchemy.schema import DDL, Index
 from sqlalchemy import event
 
@@ -361,6 +361,49 @@ class ComponentReflectionTest(fixtures.TablesTest):
     def test_get_indexes_with_schema(self):
         self._test_get_indexes(schema='test_schema')
 
+
+    @testing.requires.unique_constraint_reflection
+    def test_get_unique_constraints(self):
+        self._test_get_unique_constraints()
+
+    @testing.requires.unique_constraint_reflection
+    @testing.requires.schemas
+    def test_get_unique_constraints_with_schema(self):
+        self._test_get_unique_constraints(schema='test_schema')
+
+    @testing.provide_metadata
+    def _test_get_unique_constraints(self, schema=None):
+        uniques = sorted(
+            [
+                {'name': 'unique_a_b_c', 'column_names': ['a', 'b', 'c']},
+                {'name': 'unique_a_c', 'column_names': ['a', 'c']},
+                {'name': 'unique_b_c', 'column_names': ['b', 'c']},
+            ],
+            key=operator.itemgetter('name')
+        )
+        orig_meta = self.metadata
+        table = Table(
+            'testtbl', orig_meta,
+            Column('a', sa.String(20)),
+            Column('b', sa.String(30)),
+            Column('c', sa.Integer),
+            schema=schema
+        )
+        for uc in uniques:
+            table.append_constraint(
+                sa.UniqueConstraint(*uc['column_names'], name=uc['name'])
+            )
+        orig_meta.create_all()
+
+        inspector = inspect(orig_meta.bind)
+        reflected = sorted(
+            inspector.get_unique_constraints('testtbl', schema=schema),
+            key=operator.itemgetter('name')
+        )
+
+        eq_(uniques, reflected)
+
+
     @testing.provide_metadata
     def _test_get_view_definition(self, schema=None):
         meta = self.metadata
index 93ed0898ffb288625f7ea00ad8a6018f5ad6537d..36b753c80178e20691f5872c3521596b3149c95e 100644 (file)
@@ -878,40 +878,6 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
         assert set([t2.c.name, t2.c.id]) == set(r2.columns)
         assert set([t2.c.name]) == set(r3.columns)
 
-    @testing.provide_metadata
-    def test_unique_constraints_reflection(self):
-        uniques = sorted(
-            [
-                {'name': 'unique_a_b_c', 'column_names': ['a', 'b', 'c']},
-                {'name': 'unique_a_c', 'column_names': ['a', 'c']},
-                {'name': 'unique_b_c', 'column_names': ['b', 'c']},
-            ],
-            key=operator.itemgetter('name')
-        )
-
-        try:
-            orig_meta = sa.MetaData(bind=testing.db)
-            table = Table(
-                'testtbl', orig_meta,
-                Column('a', sa.String(20)),
-                Column('b', sa.String(30)),
-                Column('c', sa.Integer),
-            )
-            for uc in uniques:
-                table.append_constraint(
-                    sa.UniqueConstraint(*uc['column_names'], name=uc['name'])
-                )
-            orig_meta.create_all()
-
-            inspector = inspect(testing.db)
-            reflected = sorted(
-                inspector.get_unique_constraints('testtbl'),
-                key=operator.itemgetter('name')
-            )
-
-            assert uniques == reflected
-        finally:
-            testing.db.execute('drop table if exists testtbl;')
 
     @testing.requires.views
     @testing.provide_metadata
index e9f5a71afa2f6be51ad805dc9ccc4e848b43eaba..314b9da455b7851818ffcae254f15164a5bc0785 100644 (file)
@@ -248,6 +248,14 @@ class DefaultRequirements(SuiteRequirements):
                     "postgresql"
                 ])
 
+    @property
+    def unique_constraint_reflection(self):
+        return fails_on_everything_except(
+                    "postgresql",
+                    "mysql",
+                    "sqlite"
+                )
+
     @property
     def update_nowait(self):
         """Target database must support SELECT...FOR UPDATE NOWAIT"""