summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-09-04 21:26:49 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-09-04 21:26:49 +0000
commitf432bd3550443fb27711e463b086deae7c3096df (patch)
treefe344c23a69385a347b256f3a6356e388b0e865a /test
parentc586c0fe892510a853168391ccb5528516dc56da (diff)
downloadsqlalchemy-f432bd3550443fb27711e463b086deae7c3096df.tar.gz
- Fixed exception throw which would occur when string-based
primaryjoin condition was used in conjunction with backref.
Diffstat (limited to 'test')
-rw-r--r--test/ext/declarative.py24
1 files changed, 22 insertions, 2 deletions
diff --git a/test/ext/declarative.py b/test/ext/declarative.py
index 3121f959f..772dca8e1 100644
--- a/test/ext/declarative.py
+++ b/test/ext/declarative.py
@@ -4,7 +4,7 @@ from sqlalchemy.ext import declarative as decl
from sqlalchemy import exc
from testlib import sa, testing
from testlib.sa import MetaData, Table, Column, Integer, String, ForeignKey, ForeignKeyConstraint, asc
-from testlib.sa.orm import relation, create_session, class_mapper, eagerload, compile_mappers
+from testlib.sa.orm import relation, create_session, class_mapper, eagerload, compile_mappers, backref
from testlib.testing import eq_
from orm._base import ComparableEntity
@@ -114,7 +114,27 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults):
id = Column(Integer, primary_key=True)
rel = relation("User", primaryjoin="User.addresses==Foo.id")
self.assertRaisesMessage(exc.InvalidRequestError, "'addresses' is not an instance of ColumnProperty", compile_mappers)
-
+
+ def test_string_dependency_resolution_in_backref(self):
+ class User(Base, ComparableEntity):
+ __tablename__ = 'users'
+ id = Column(Integer, primary_key=True)
+ name = Column(String(50))
+ addresses = relation("Address",
+ primaryjoin="User.id==Address.user_id",
+ backref="user"
+ )
+
+ class Address(Base, ComparableEntity):
+ __tablename__ = 'addresses'
+ id = Column(Integer, primary_key=True)
+ email = Column(String(50))
+ user_id = Column(Integer, ForeignKey('users.id'))
+
+ compile_mappers()
+ eq_(str(User.addresses.property.primaryjoin), str(Address.user.property.primaryjoin))
+
+
def test_uncompiled_attributes_in_relation(self):
class Address(Base, ComparableEntity):
__tablename__ = 'addresses'