summaryrefslogtreecommitdiff
path: root/test/engine/test_reflection.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/engine/test_reflection.py')
-rw-r--r--test/engine/test_reflection.py88
1 files changed, 58 insertions, 30 deletions
diff --git a/test/engine/test_reflection.py b/test/engine/test_reflection.py
index 087610333..83650609d 100644
--- a/test/engine/test_reflection.py
+++ b/test/engine/test_reflection.py
@@ -14,6 +14,7 @@ from sqlalchemy.util import ue
metadata, users = None, None
+
class ReflectionTest(fixtures.TestBase, ComparesTables):
__backend__ = True
@@ -253,7 +254,7 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
"""
Table('a', self.metadata, Column('id', Integer, primary_key=True))
Table('b', self.metadata, Column('id', Integer, primary_key=True),
- Column('a_id', Integer, sa.ForeignKey('a.id')))
+ Column('a_id', Integer, sa.ForeignKey('a.id')))
self.metadata.create_all()
m2 = MetaData()
@@ -275,7 +276,7 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
"""
Table('a', self.metadata, Column('id', Integer, primary_key=True))
Table('b', self.metadata, Column('id', Integer, primary_key=True),
- Column('a_id', Integer, sa.ForeignKey('a.id')))
+ Column('a_id', Integer, sa.ForeignKey('a.id')))
self.metadata.create_all()
m2 = MetaData()
@@ -404,7 +405,6 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
eq_(list(table.primary_key), [table.c.col1])
eq_(table.c.col1.primary_key, True)
-
@testing.provide_metadata
def test_override_pkfk(self):
"""test that you can override columns which contain foreign keys
@@ -419,7 +419,6 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
Column('id', sa.Integer, primary_key=True),
Column('street', sa.String(30)))
-
meta.create_all()
meta2 = MetaData(testing.db)
a2 = Table('addresses', meta2,
@@ -541,8 +540,6 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
assert f1 in b1.constraints
assert len(b1.constraints) == 2
-
-
@testing.provide_metadata
def test_override_keys(self):
"""test that columns can be overridden with a 'key',
@@ -654,12 +651,13 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
backends with {dialect}.get_foreign_keys() support)"""
if testing.against('postgresql'):
- test_attrs = ('match', 'onupdate', 'ondelete', 'deferrable', 'initially')
+ test_attrs = ('match', 'onupdate', 'ondelete',
+ 'deferrable', 'initially')
addresses_user_id_fkey = sa.ForeignKey(
# Each option is specifically not a Postgres default, or
# it won't be returned by PG's inspection
'users.id',
- name = 'addresses_user_id_fkey',
+ name='addresses_user_id_fkey',
match='FULL',
onupdate='RESTRICT',
ondelete='RESTRICT',
@@ -672,7 +670,7 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
# elided by MySQL's inspection
addresses_user_id_fkey = sa.ForeignKey(
'users.id',
- name = 'addresses_user_id_fkey',
+ name='addresses_user_id_fkey',
onupdate='CASCADE',
ondelete='CASCADE'
)
@@ -726,11 +724,12 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
Column('slot', sa.String(128)),
)
- assert_raises_message(sa.exc.InvalidRequestError,
- "Foreign key associated with column 'slots.pkg_id' "
- "could not find table 'pkgs' with which to generate "
- "a foreign key to target column 'pkg_id'",
- metadata.create_all)
+ assert_raises_message(
+ sa.exc.InvalidRequestError,
+ "Foreign key associated with column 'slots.pkg_id' "
+ "could not find table 'pkgs' with which to generate "
+ "a foreign key to target column 'pkg_id'",
+ metadata.create_all)
def test_composite_pks(self):
"""test reflection of a composite primary key"""
@@ -797,7 +796,6 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
table.c.multi_hoho
== table2.c.lala).compare(j.onclause))
-
@testing.crashes('oracle', 'FIXME: unknown, confirm not fails_on')
@testing.requires.check_constraints
@testing.provide_metadata
@@ -869,7 +867,6 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
def test_reflect_uses_bind_engine_reflect(self):
self._test_reflect_uses_bind(lambda e: MetaData().reflect(e))
-
@testing.provide_metadata
def test_reflect_all(self):
existing = testing.db.table_names()
@@ -1053,6 +1050,7 @@ class ReflectionTest(fixtures.TestBase, ComparesTables):
finally:
_drop_views(metadata.bind)
+
class CreateDropTest(fixtures.TestBase):
__backend__ = True
@@ -1101,7 +1099,6 @@ class CreateDropTest(fixtures.TestBase):
eq_(ua, ['users', 'email_addresses'])
eq_(oi, ['orders', 'items'])
-
def test_checkfirst(self):
try:
assert not users.exists(testing.db)
@@ -1141,6 +1138,7 @@ class CreateDropTest(fixtures.TestBase):
- set(testing.db.table_names()))
metadata.drop_all(bind=testing.db)
+
class SchemaManipulationTest(fixtures.TestBase):
__backend__ = True
@@ -1159,6 +1157,7 @@ class SchemaManipulationTest(fixtures.TestBase):
assert len(addresses.c.user_id.foreign_keys) == 1
assert addresses.constraints == set([addresses.primary_key, fk])
+
class UnicodeReflectionTest(fixtures.TestBase):
__backend__ = True
@@ -1170,16 +1169,40 @@ class UnicodeReflectionTest(fixtures.TestBase):
('plain', 'col_plain', 'ix_plain')
])
no_has_table = [
- ('no_has_table_1', ue('col_Unit\u00e9ble'), ue('ix_Unit\u00e9ble')),
- ('no_has_table_2', ue('col_\u6e2c\u8a66'), ue('ix_\u6e2c\u8a66')),
+ (
+ 'no_has_table_1',
+ ue('col_Unit\u00e9ble'),
+ ue('ix_Unit\u00e9ble')
+ ),
+ (
+ 'no_has_table_2',
+ ue('col_\u6e2c\u8a66'),
+ ue('ix_\u6e2c\u8a66')
+ ),
]
no_case_sensitivity = [
- (ue('\u6e2c\u8a66'), ue('col_\u6e2c\u8a66'), ue('ix_\u6e2c\u8a66')),
- (ue('unit\u00e9ble'), ue('col_unit\u00e9ble'), ue('ix_unit\u00e9ble')),
+ (
+ ue('\u6e2c\u8a66'),
+ ue('col_\u6e2c\u8a66'),
+ ue('ix_\u6e2c\u8a66')
+ ),
+ (
+ ue('unit\u00e9ble'),
+ ue('col_unit\u00e9ble'),
+ ue('ix_unit\u00e9ble')
+ ),
]
full = [
- (ue('Unit\u00e9ble'), ue('col_Unit\u00e9ble'), ue('ix_Unit\u00e9ble')),
- (ue('\u6e2c\u8a66'), ue('col_\u6e2c\u8a66'), ue('ix_\u6e2c\u8a66')),
+ (
+ ue('Unit\u00e9ble'),
+ ue('col_Unit\u00e9ble'),
+ ue('ix_Unit\u00e9ble')
+ ),
+ (
+ ue('\u6e2c\u8a66'),
+ ue('col_\u6e2c\u8a66'),
+ ue('ix_\u6e2c\u8a66')
+ ),
]
# as you can see, our options for this kind of thing
@@ -1268,6 +1291,7 @@ class UnicodeReflectionTest(fixtures.TestBase):
[(names[tname][1], names[tname][0])]
)
+
class SchemaTest(fixtures.TestBase):
__backend__ = True
@@ -1398,8 +1422,6 @@ class SchemaTest(fixtures.TestBase):
)
-
-
# Tests related to engine.reflection
@@ -1432,7 +1454,8 @@ def createTables(meta, schema=None):
dingalings = Table("dingalings", meta,
Column('dingaling_id', sa.Integer, primary_key=True),
Column('address_id', sa.Integer,
- sa.ForeignKey('%semail_addresses.address_id' % schema_prefix)),
+ sa.ForeignKey(
+ '%semail_addresses.address_id' % schema_prefix)),
Column('data', sa.String(30)),
schema=schema, test_needs_fk=True,
)
@@ -1448,6 +1471,7 @@ def createTables(meta, schema=None):
return (users, addresses, dingalings)
+
def createIndexes(con, schema=None):
fullname = 'users'
if schema:
@@ -1455,6 +1479,7 @@ def createIndexes(con, schema=None):
query = "CREATE INDEX users_t_idx ON %s (test1, test2)" % fullname
con.execute(sa.sql.text(query))
+
@testing.requires.views
def _create_views(con, schema=None):
for table_name in ('users', 'email_addresses'):
@@ -1462,10 +1487,10 @@ def _create_views(con, schema=None):
if schema:
fullname = "%s.%s" % (schema, table_name)
view_name = fullname + '_v'
- query = "CREATE VIEW %s AS SELECT * FROM %s" % (view_name,
- fullname)
+ query = "CREATE VIEW %s AS SELECT * FROM %s" % (view_name, fullname)
con.execute(sa.sql.text(query))
+
@testing.requires.views
def _drop_views(con, schema=None):
for table_name in ('email_addresses', 'users'):
@@ -1504,6 +1529,7 @@ class ReverseCasingReflectTest(fixtures.TestBase, AssertsCompiledSQL):
'weird_casing."Col2", weird_casing."col3" '
'FROM weird_casing')
+
class CaseSensitiveTest(fixtures.TablesTest):
"""Nail down case sensitive behaviors, mostly on MySQL."""
__backend__ = True
@@ -1539,7 +1565,8 @@ class CaseSensitiveTest(fixtures.TablesTest):
)
def test_reflect_via_fk(self):
m = MetaData()
- t2 = Table("SomeOtherTable", m, autoload=True, autoload_with=testing.db)
+ t2 = Table("SomeOtherTable", m, autoload=True,
+ autoload_with=testing.db)
eq_(t2.name, "SomeOtherTable")
assert "SomeTable" in m.tables
@@ -1551,7 +1578,6 @@ class CaseSensitiveTest(fixtures.TablesTest):
eq_(t2.name, "sOmEtAbLe")
-
class ColumnEventsTest(fixtures.RemovesEvents, fixtures.TestBase):
__backend__ = True
@@ -1584,6 +1610,7 @@ class ColumnEventsTest(fixtures.RemovesEvents, fixtures.TestBase):
from sqlalchemy.schema import Table
m = MetaData(testing.db)
+
def column_reflect(insp, table, column_info):
if column_info['name'] == col:
column_info.update(update)
@@ -1620,6 +1647,7 @@ class ColumnEventsTest(fixtures.RemovesEvents, fixtures.TestBase):
def test_override_key_fk(self):
m = MetaData(testing.db)
+
def column_reflect(insp, table, column_info):
if column_info['name'] == 'q':