SQLAlchemy 0.7's column.foreign_keys is a set and has no _list (addresses #112)

This commit is contained in:
Jan Dittberner 2011-05-25 16:38:00 +02:00
parent eace107b69
commit 20df98c44d

View File

@ -79,12 +79,18 @@ class TestConstraint(CommonTestConstraint):
pk.create()
# Add a FK by creating a FK constraint
self.assertEquals(self.table.c.fkey.foreign_keys._list, [])
if SQLA_07:
self.assertEquals(list(self.table.c.fkey.foreign_keys), [])
else:
self.assertEquals(self.table.c.fkey.foreign_keys._list, [])
fk = ForeignKeyConstraint([self.table.c.fkey],
[self.table.c.id],
name="fk_id_fkey",
ondelete="CASCADE")
self.assert_(self.table.c.fkey.foreign_keys._list is not [])
if SQLA_07:
self.assert_(list(self.table.c.fkey.foreign_keys) is not [])
else:
self.assert_(self.table.c.fkey.foreign_keys._list is not [])
for key in fk.columns:
self.assertEquals(key, self.table.c.fkey.name)
self.assertEquals([e.column for e in fk.elements], [self.table.c.id])
@ -97,16 +103,25 @@ class TestConstraint(CommonTestConstraint):
fk.create()
# test for ondelete/onupdate
fkey = self.table.c.fkey.foreign_keys._list[0]
if SQLA_07:
fkey = list(self.table.c.fkey.foreign_keys)[0]
else:
fkey = self.table.c.fkey.foreign_keys._list[0]
self.assertEquals(fkey.ondelete, "CASCADE")
# TODO: test on real db if it was set
self.refresh_table()
self.assert_(self.table.c.fkey.foreign_keys._list is not [])
if SQLA_07:
self.assert_(list(self.table.c.fkey.foreign_keys) is not [])
else:
self.assert_(self.table.c.fkey.foreign_keys._list is not [])
fk.drop()
self.refresh_table()
self.assertEquals(self.table.c.fkey.foreign_keys._list, [])
if SQLA_07:
self.assertEquals(list(self.table.c.fkey.foreign_keys), [])
else:
self.assertEquals(self.table.c.fkey.foreign_keys._list, [])
@fixture.usedb()
def test_define_pk(self):
@ -212,19 +227,28 @@ class TestAutoname(CommonTestConstraint):
cons = ForeignKeyConstraint([self.table.c.fkey], [self.table.c.id])
cons.create()
self.refresh_table()
self.table.c.fkey.foreign_keys[0].column is self.table.c.id
if SQLA_07:
list(self.table.c.fkey.foreign_keys)[0].column is self.table.c.id
else:
self.table.c.fkey.foreign_keys[0].column is self.table.c.id
# Remove the name, drop the constraint; it should succeed
cons.name = None
cons.drop()
self.refresh_table()
self.assertEquals(self.table.c.fkey.foreign_keys._list, list())
if SQLA_07:
self.assertEquals(list(self.table.c.fkey.foreign_keys), list())
else:
self.assertEquals(self.table.c.fkey.foreign_keys._list, list())
# test string names
cons = ForeignKeyConstraint(['fkey'], ['%s.id' % self.tablename], table=self.table)
cons.create()
self.refresh_table()
self.table.c.fkey.foreign_keys[0].column is self.table.c.id
if SQLA_07:
list(self.table.c.fkey.foreign_keys)[0].column is self.table.c.id
else:
self.table.c.fkey.foreign_keys[0].column is self.table.c.id
# Remove the name, drop the constraint; it should succeed
cons.name = None