summaryrefslogtreecommitdiff
path: root/test/ext/declarative.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-07-19 18:55:11 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-07-19 18:55:11 +0000
commitc5141f2981a69c18338ccabc97067d1d563d43a9 (patch)
tree38442d5b82432f6b776cab36fcbb60f04f798612 /test/ext/declarative.py
parente78d06a4db273cd1b5b2b2212a5b2d5d15270d7c (diff)
downloadsqlalchemy-c5141f2981a69c18338ccabc97067d1d563d43a9.tar.gz
- Class-bound attributes sent as arguments to
relation()'s remote_side and foreign_keys parameters are now accepted, allowing them to be used with declarative.
Diffstat (limited to 'test/ext/declarative.py')
-rw-r--r--test/ext/declarative.py28
1 files changed, 27 insertions, 1 deletions
diff --git a/test/ext/declarative.py b/test/ext/declarative.py
index 8ea3abd61..0fafc5999 100644
--- a/test/ext/declarative.py
+++ b/test/ext/declarative.py
@@ -107,7 +107,33 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
self.assertEquals(sess.query(User).filter(User.name == 'ed').one(),
User(name='ed', addresses=[Address(email='xyz'), Address(email='def'), Address(email='abc')])
)
-
+
+ def test_uncompiled_attributes_in_relation(self):
+ class Address(Base, ComparableEntity):
+ __tablename__ = 'addresses'
+ id = Column(Integer, primary_key=True)
+ email = Column(String(50))
+ user_id = Column(Integer) # note no foreign key
+
+ class User(Base, ComparableEntity):
+ __tablename__ = 'users'
+ id = Column(Integer, primary_key=True)
+ name = Column(String(50))
+ addresses = relation("Address", order_by=Address.email,
+ foreign_keys=Address.user_id, remote_side=Address.user_id,
+ primaryjoin=id==Address.user_id,
+ )
+
+ Base.metadata.create_all()
+
+ sess = create_session()
+ u1 = User(name='ed', addresses=[Address(email='abc'), Address(email='xyz'), Address(email='def')])
+ sess.add(u1)
+ sess.flush()
+ sess.clear()
+ self.assertEquals(sess.query(User).filter(User.name == 'ed').one(),
+ User(name='ed', addresses=[Address(email='abc'), Address(email='def'), Address(email='xyz')])
+ )
def test_nice_dependency_error(self):
class User(Base):