summaryrefslogtreecommitdiff
path: root/test/ext/declarative/test_basic.py
diff options
context:
space:
mode:
authorRichard Mitchell <richard.j.mitchell@gmail.com>2012-11-27 14:03:42 +0000
committerRichard Mitchell <richard.j.mitchell@gmail.com>2012-11-27 14:03:42 +0000
commit92535b4b575874a6c0f0392cab46300fe59107ee (patch)
tree8fd90b842bdf7270005a8647b7b3137c522cef29 /test/ext/declarative/test_basic.py
parente2697d547ec8c24c9a37a72fc60abe73b7dee81b (diff)
downloadsqlalchemy-92535b4b575874a6c0f0392cab46300fe59107ee.tar.gz
Allow use of synonyms in primaryjoin / secondaryjoin conditions
Diffstat (limited to 'test/ext/declarative/test_basic.py')
-rw-r--r--test/ext/declarative/test_basic.py41
1 files changed, 40 insertions, 1 deletions
diff --git a/test/ext/declarative/test_basic.py b/test/ext/declarative/test_basic.py
index 19141143f..0fe54a154 100644
--- a/test/ext/declarative/test_basic.py
+++ b/test/ext/declarative/test_basic.py
@@ -14,7 +14,8 @@ from sqlalchemy.orm import relationship, create_session, class_mapper, \
Session
from sqlalchemy.testing import eq_
from sqlalchemy.util import classproperty
-from sqlalchemy.ext.declarative import declared_attr, AbstractConcreteBase, ConcreteBase
+from sqlalchemy.ext.declarative import declared_attr, AbstractConcreteBase, \
+ ConcreteBase, synonym_for
from sqlalchemy.testing import fixtures
from sqlalchemy.testing.util import gc_collect
@@ -251,6 +252,44 @@ class DeclarativeTest(DeclarativeTestBase):
"'addresses' is not an instance of "
"ColumnProperty", configure_mappers)
+ def test_string_dependency_resolution_synonym(self):
+ from sqlalchemy.sql import desc
+
+ class User(Base, fixtures.ComparableEntity):
+
+ __tablename__ = 'users'
+ id = Column(Integer, primary_key=True,
+ test_needs_autoincrement=True)
+ name = Column(String(50))
+
+ Base.metadata.create_all()
+ sess = create_session()
+ u1 = User(name='ed')
+ sess.add(u1)
+ sess.flush()
+ sess.expunge_all()
+ eq_(sess.query(User).filter(User.name == 'ed').one(),
+ User(name='ed'))
+
+ class Foo(Base, fixtures.ComparableEntity):
+
+ __tablename__ = 'foo'
+ id = Column(Integer, primary_key=True)
+ _user_id = Column(Integer)
+ rel = relationship('User',
+ uselist=False,
+ foreign_keys=[User.id],
+ primaryjoin='Foo.user_id==User.id')
+
+ @synonym_for('_user_id')
+ @property
+ def user_id(self):
+ return self._user_id
+
+ foo = Foo()
+ foo.rel = u1
+ assert foo.rel == u1
+
def test_string_dependency_resolution_two(self):
class User(Base, fixtures.ComparableEntity):