From: Jason Kirtland Date: Mon, 10 Mar 2008 18:40:36 +0000 (+0000) Subject: - Added a primaryjoin= test X-Git-Tag: rel_0_4_4~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6eeb43e5c27c87879a8ffebbaa1365bdf81d437e;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - Added a primaryjoin= test --- diff --git a/test/ext/declarative.py b/test/ext/declarative.py index cef34b9946..3789fca4fa 100644 --- a/test/ext/declarative.py +++ b/test/ext/declarative.py @@ -173,6 +173,40 @@ class DeclarativeTest(TestBase): self.assertEquals(sess.query(Company).filter(Company.employees.of_type(Engineer).any(Engineer.primary_language=='cobol')).first(), c2) + def test_relation_reference(self): + class Address(Base, Fixture): + __tablename__ = 'addresses' + + id = Column('id', Integer, primary_key=True) + email = Column('email', String(50)) + user_id = Column('user_id', Integer, ForeignKey('users.id')) + + class User(Base, Fixture): + __tablename__ = 'users' + + id = Column('id', Integer, primary_key=True) + name = Column('name', String(50)) + addresses = relation("Address", backref="user", + primaryjoin=id==Address.user_id) + + User.address_count = column_property(select([func.count(Address.id)]).where(Address.user_id==User.id).as_scalar()) + + Base.metadata.create_all() + + u1 = User(name='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(name='u1', address_count=2, addresses=[ + Address(email='one'), + Address(email='two'), + ])]) + def test_single_inheritance(self): class Company(Base, Fixture): __tablename__ = 'companies'