From f432bd3550443fb27711e463b086deae7c3096df Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 4 Sep 2008 21:26:49 +0000 Subject: - Fixed exception throw which would occur when string-based primaryjoin condition was used in conjunction with backref. --- test/ext/declarative.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) (limited to 'test') 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' -- cgit v1.2.1