diff options
| author | Richard Mitchell <richard.j.mitchell@gmail.com> | 2012-11-27 14:03:42 +0000 |
|---|---|---|
| committer | Richard Mitchell <richard.j.mitchell@gmail.com> | 2012-11-27 14:03:42 +0000 |
| commit | 92535b4b575874a6c0f0392cab46300fe59107ee (patch) | |
| tree | 8fd90b842bdf7270005a8647b7b3137c522cef29 /test/ext/declarative/test_basic.py | |
| parent | e2697d547ec8c24c9a37a72fc60abe73b7dee81b (diff) | |
| download | sqlalchemy-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.py | 41 |
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): |
