From 0ad1aaa388fc52de55edcbeb06586dc95587f305 Mon Sep 17 00:00:00 2001 From: Jason Kirtland Date: Mon, 10 Mar 2008 19:21:49 +0000 Subject: [PATCH] - Test autoload with a FK override --- test/ext/declarative.py | 71 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/test/ext/declarative.py b/test/ext/declarative.py index 3789fca4fa..9a26dbd8a6 100644 --- a/test/ext/declarative.py +++ b/test/ext/declarative.py @@ -281,6 +281,12 @@ class DeclarativeReflectionTest(TestBase): Column('id', Integer, primary_key=True), Column('email', String(50)), Column('user_id', Integer, ForeignKey('users.id'))) + Table('imhandles', reflection_metadata, + Column('id', Integer, primary_key=True), + Column('user_id', Integer), + Column('network', String(50)), + Column('handle', String(50))) + reflection_metadata.create_all() def setUp(self): @@ -357,5 +363,70 @@ class DeclarativeReflectionTest(TestBase): self.assertRaises(TypeError, User, name='u3') + def test_rekey(self): + meta = MetaData(testing.db) + + class User(Base, Fixture): + __tablename__ = 'users' + __autoload__ = True + nom = Column('name', String(50), key='nom') + addresses = relation("Address", backref="user") + + class Address(Base, Fixture): + __tablename__ = 'addresses' + __autoload__ = True + + u1 = User(nom='u1', addresses=[ + Address(email='one'), + Address(email='two'), + ]) + sess = create_session() + sess.save(u1) + sess.flush() + sess.clear() + + self.assertEquals(sess.query(User).all(), [User(nom='u1', addresses=[ + Address(email='one'), + Address(email='two'), + ])]) + + a1 = sess.query(Address).filter(Address.email=='two').one() + self.assertEquals(a1, Address(email='two')) + self.assertEquals(a1.user, User(nom='u1')) + + self.assertRaises(TypeError, User, name='u3') + + def test_supplied_fk(self): + meta = MetaData(testing.db) + + class IMHandle(Base, Fixture): + __tablename__ = 'imhandles' + __autoload__ = True + + user_id = Column('user_id', Integer, + ForeignKey('users.id')) + class User(Base, Fixture): + __tablename__ = 'users' + __autoload__ = True + handles = relation("IMHandle", backref="user") + + u1 = User(name='u1', handles=[ + IMHandle(network='blabber', handle='foo'), + IMHandle(network='lol', handle='zomg') + ]) + sess = create_session() + sess.save(u1) + sess.flush() + sess.clear() + + self.assertEquals(sess.query(User).all(), [User(name='u1', handles=[ + IMHandle(network='blabber', handle='foo'), + IMHandle(network='lol', handle='zomg') + ])]) + + a1 = sess.query(IMHandle).filter(IMHandle.handle=='zomg').one() + self.assertEquals(a1, IMHandle(network='lol', handle='zomg')) + self.assertEquals(a1.user, User(name='u1')) + if __name__ == '__main__': testing.main() -- 2.47.3