From: Mike Bayer Date: Thu, 6 Mar 2008 16:53:40 +0000 (+0000) Subject: - adjusted generative.py test for revised error message X-Git-Tag: rel_0_4_4~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d8e258410e224b5910e656539c9e15d3135d8eb7;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - adjusted generative.py test for revised error message - mapper with non_primary asserts primary mapper already created - added any()/instance compare test to query --- diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index f89830c02c..648a67c48a 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -732,6 +732,8 @@ class Mapper(object): """ if self.non_primary: + if not hasattr(self.class_, '_class_state'): + raise exceptions.InvalidRequestError("Class %s has no primary mapper configured. Configure a primary mapper first before setting up a non primary Mapper.") self._class_state = self.class_._class_state _mapper_registry[self] = True return diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index ebe62e915c..c684cf501b 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -522,7 +522,7 @@ class Query(object): use_selectable = use_selectable.alias() if prop._is_self_referential() and not create_aliases and not use_selectable: - raise exceptions.InvalidRequestError("Self-referential query on '%s' property requires create_aliases=True argument." % str(prop)) + raise exceptions.InvalidRequestError("Self-referential query on '%s' property requires aliased=True argument." % str(prop)) if prop.select_table not in currenttables or create_aliases or use_selectable: if prop.secondary: diff --git a/test/orm/generative.py b/test/orm/generative.py index db8e313e67..c917b3e6e1 100644 --- a/test/orm/generative.py +++ b/test/orm/generative.py @@ -253,13 +253,13 @@ class SelfRefTest(ORMTest): sess.query(T).join('children').select_by(id=7) assert False except exceptions.InvalidRequestError, e: - assert str(e) == "Self-referential query on 'T.children (T)' property requires create_aliases=True argument.", str(e) + assert str(e) == "Self-referential query on 'T.children (T)' property requires aliased=True argument.", str(e) try: sess.query(T).join(['children']).select_by(id=7) assert False except exceptions.InvalidRequestError, e: - assert str(e) == "Self-referential query on 'T.children (T)' property requires create_aliases=True argument.", str(e) + assert str(e) == "Self-referential query on 'T.children (T)' property requires aliased=True argument.", str(e) diff --git a/test/orm/mapper.py b/test/orm/mapper.py index 637b890ead..713cbced7d 100644 --- a/test/orm/mapper.py +++ b/test/orm/mapper.py @@ -322,6 +322,13 @@ class MapperTest(MapperSuperTest): except exceptions.ArgumentError, e: assert "Attempting to assign a new relation 'addresses' to a non-primary mapper on class 'User'" in str(e) + def test_illegal_non_primary_2(self): + try: + mapper(User, users, non_primary=True) + assert False + except exceptions.InvalidRequestError, e: + assert "Configure a primary mapper first" in str(e) + def test_propfilters(self): t = Table('person', MetaData(), Column('id', Integer, primary_key=True), diff --git a/test/orm/query.py b/test/orm/query.py index 2915c0f53d..e9d99d71b8 100644 --- a/test/orm/query.py +++ b/test/orm/query.py @@ -354,6 +354,9 @@ class FilterTest(QueryTest): assert [Address(id=2), Address(id=3), Address(id=4)] == sess.query(Address).filter(Address.user.has(User.name.like('%ed%'), id=8)).all() + dingaling = sess.query(Dingaling).get(2) + assert [User(id=9)] == sess.query(User).filter(User.addresses.any(Address.dingaling==dingaling)).all() + def test_contains_m2m(self): sess = create_session() item = sess.query(Item).get(3)