]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- move this test to PG test_reflection
authorMike Bayer <mike_mp@zzzcomputing.com>
Fri, 25 Oct 2013 21:19:03 +0000 (17:19 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Fri, 25 Oct 2013 21:19:03 +0000 (17:19 -0400)
- don't use locals()

test/dialect/postgresql/test_dialect.py
test/dialect/postgresql/test_reflection.py
test/engine/test_reflection.py

index 5b845cbd1dae275639edde1d06ab2bb95e13d689..a8fedabfc8b7b4e493abb870c711e92933cd7cfe 100644 (file)
@@ -233,82 +233,3 @@ class MiscTest(fixtures.TestBase, AssertsExecutionResults, AssertsCompiledSQL):
                 "c %s NOT NULL" % expected
             )
 
-class InspectionTest(fixtures.TestBase, AssertsExecutionResults, AssertsCompiledSQL):
-
-    __only_on__ = 'postgresql'
-
-    def test_get_foreign_keys(self):
-        """
-        PGDialect.get_foreign_keys()
-        """
-        metadata = MetaData(testing.db)
-        person = Table('person', metadata,
-            Column('id', String(length=32), nullable=False, primary_key=True),
-            Column('company_id', ForeignKey('company.id',
-                name='person_company_id_fkey',
-                match='FULL', onupdate='RESTRICT', ondelete='RESTRICT',
-                deferrable=True, initially='DEFERRED'
-                )
-            )
-        )
-        company = Table('company', metadata,
-            Column('id', String(length=32), nullable=False, primary_key=True),
-            Column('name', String(length=255)),
-            Column('industry_id', ForeignKey('industry.id',
-                name='company_industry_id_fkey',
-                onupdate='CASCADE', ondelete='CASCADE',
-                deferrable=False, # PG default
-                initially='IMMEDIATE' # PG default
-                )
-            )
-        )
-        industry = Table('industry', metadata,
-            Column('id', Integer(), nullable=False, primary_key=True),
-            Column('name', String(length=255))
-        )
-        fk_ref = {
-            'person_company_id_fkey': {
-                'name': 'person_company_id_fkey',
-                'constrained_columns': ['company_id'],
-                'referred_columns': ['id'],
-                'referred_table': 'company',
-                'referred_schema': None,
-                'options': {
-                    'onupdate': 'RESTRICT',
-                    'deferrable': True,
-                    'ondelete': 'RESTRICT',
-                    'initially': 'DEFERRED',
-                    'match': 'FULL'
-                    }
-                },
-            'company_industry_id_fkey': {
-                'name': 'company_industry_id_fkey',
-                'constrained_columns': ['industry_id'],
-                'referred_columns': ['id'],
-                'referred_table': 'industry',
-                'referred_schema': None,
-                'options': {
-                    'onupdate': 'CASCADE',
-                    'deferrable': None,
-                    'ondelete': 'CASCADE',
-                    'initially': None,
-                    'match': None
-                }
-            }
-        }
-        try:
-            connection = testing.db.connect()
-            industry.create()
-            company.create()
-            person.create()
-            inspector = Inspector.from_engine(connection)
-            fks = inspector.get_foreign_keys('person') + \
-                inspector.get_foreign_keys('company')
-            for fk in fks:
-                ref = fk_ref[fk['name']]
-                for key, val in fk.items():
-                    eq_(val, ref[key])
-        finally:
-            person.drop()
-            company.drop()
-            industry.drop()
index 1f2c1e94bf9db4a47a51961ac9feb48067674dfa..58f34d5d043a5fe3f504d52edfe79f184517f40a 100644 (file)
@@ -5,6 +5,7 @@ from sqlalchemy.testing.assertions import eq_, assert_raises, \
                 AssertsCompiledSQL, ComparesTables
 from sqlalchemy.testing import engines, fixtures
 from sqlalchemy import testing
+from sqlalchemy import inspect
 from sqlalchemy import Table, Column, select, MetaData, text, Integer, \
             String, Sequence, ForeignKey, join, Numeric, \
             PrimaryKeyConstraint, DateTime, tuple_, Float, BigInteger, \
@@ -427,6 +428,70 @@ class ReflectionTest(fixtures.TestBase):
         eq_(ind, [{'unique': False, 'column_names': ['y'], 'name': 'idx1'}])
         conn.close()
 
+    @testing.provide_metadata
+    def test_foreign_key_option_inspection(self):
+        metadata = self.metadata
+        Table('person', metadata,
+            Column('id', String(length=32), nullable=False, primary_key=True),
+            Column('company_id', ForeignKey('company.id',
+                name='person_company_id_fkey',
+                match='FULL', onupdate='RESTRICT', ondelete='RESTRICT',
+                deferrable=True, initially='DEFERRED'
+                )
+            )
+        )
+        Table('company', metadata,
+            Column('id', String(length=32), nullable=False, primary_key=True),
+            Column('name', String(length=255)),
+            Column('industry_id', ForeignKey('industry.id',
+                name='company_industry_id_fkey',
+                onupdate='CASCADE', ondelete='CASCADE',
+                deferrable=False,  # PG default
+                initially='IMMEDIATE'  # PG default
+                )
+            )
+        )
+        Table('industry', metadata,
+            Column('id', Integer(), nullable=False, primary_key=True),
+            Column('name', String(length=255))
+        )
+        fk_ref = {
+            'person_company_id_fkey': {
+                'name': 'person_company_id_fkey',
+                'constrained_columns': ['company_id'],
+                'referred_columns': ['id'],
+                'referred_table': 'company',
+                'referred_schema': None,
+                'options': {
+                    'onupdate': 'RESTRICT',
+                    'deferrable': True,
+                    'ondelete': 'RESTRICT',
+                    'initially': 'DEFERRED',
+                    'match': 'FULL'
+                    }
+                },
+            'company_industry_id_fkey': {
+                'name': 'company_industry_id_fkey',
+                'constrained_columns': ['industry_id'],
+                'referred_columns': ['id'],
+                'referred_table': 'industry',
+                'referred_schema': None,
+                'options': {
+                    'onupdate': 'CASCADE',
+                    'deferrable': None,
+                    'ondelete': 'CASCADE',
+                    'initially': None,
+                    'match': None
+                }
+            }
+        }
+        metadata.create_all()
+        inspector = inspect(testing.db)
+        fks = inspector.get_foreign_keys('person') + \
+            inspector.get_foreign_keys('company')
+        for fk in fks:
+            eq_(fk, fk_ref[fk['name']])
+
 class CustomTypeReflectionTest(fixtures.TestBase):
 
     class CustomType(object):
index c360527818983a376aca5f715052a016fee1553d..e7baa9d568354fb0d05cb854ba549e7266743237 100644 (file)
@@ -647,9 +647,9 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
         meta2 = MetaData()
         meta2.reflect(testing.db)
         for fk in meta2.tables['addresses'].foreign_keys:
-            ref = locals()[fk.name]
+            ref = addresses_user_id_fkey
             for attr in test_attrs:
-                assert getattr(fk, attr) == getattr(ref, attr)
+                eq_(getattr(fk, attr), getattr(ref, attr))
 
     def test_pks_not_uniques(self):
         """test that primary key reflection not tripped up by unique