From: Mike Bayer Date: Sun, 5 Dec 2010 03:59:32 +0000 (-0500) Subject: - ordering for tests, [ticket:1888] X-Git-Tag: rel_0_7b1~205^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=926b0d7fa860abee8b34236148fa34a6666700a9;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - ordering for tests, [ticket:1888] --- diff --git a/test/orm/test_eager_relations.py b/test/orm/test_eager_relations.py index b70ad0973a..2f2fc7b0c5 100644 --- a/test/orm/test_eager_relations.py +++ b/test/orm/test_eager_relations.py @@ -610,7 +610,8 @@ class EagerTest(_fixtures.FixtureTest, testing.AssertsCompiledSQL): sel = sa.select([users, addresses.c.email_address], users.c.id==addresses.c.user_id).alias('useralias') mapper(User, sel, properties={ - 'orders':relationship(Order, primaryjoin=sel.c.id==orders.c.user_id, lazy='joined') + 'orders':relationship(Order, primaryjoin=sel.c.id==orders.c.user_id, + lazy='joined', order_by=orders.c.id) }) mapper(Order, orders) diff --git a/test/orm/test_expire.py b/test/orm/test_expire.py index f356658a1a..4c10399bcd 100644 --- a/test/orm/test_expire.py +++ b/test/orm/test_expire.py @@ -148,7 +148,8 @@ class ExpireTest(_fixtures.FixtureTest): @testing.resolve_artifact_names def test_refresh_collection_exception(self): - """test graceful failure for currently unsupported immediate refresh of a collection""" + """test graceful failure for currently unsupported + immediate refresh of a collection""" mapper(User, users, properties={ 'addresses':relationship(Address, order_by=addresses.c.email_address) @@ -156,10 +157,13 @@ class ExpireTest(_fixtures.FixtureTest): mapper(Address, addresses) s = create_session(autoflush=True, autocommit=False) u = s.query(User).get(8) - assert_raises_message(sa_exc.InvalidRequestError, "properties specified for refresh", s.refresh, u, ['addresses']) + assert_raises_message(sa_exc.InvalidRequestError, + "properties specified for refresh", + s.refresh, u, ['addresses']) # in contrast to a regular query with no columns - assert_raises_message(sa_exc.InvalidRequestError, "no columns with which to SELECT", s.query().all) + assert_raises_message(sa_exc.InvalidRequestError, + "no columns with which to SELECT", s.query().all) @testing.resolve_artifact_names def test_refresh_cancels_expire(self): @@ -732,7 +736,8 @@ class ExpireTest(_fixtures.FixtureTest): @testing.resolve_artifact_names def test_expire_all(self): mapper(User, users, properties={ - 'addresses':relationship(Address, backref='user', lazy='joined'), + 'addresses':relationship(Address, backref='user', lazy='joined', + order_by=addresses.c.id), }) mapper(Address, addresses) diff --git a/test/orm/test_mapper.py b/test/orm/test_mapper.py index 52714eb43e..76c52d1c46 100644 --- a/test/orm/test_mapper.py +++ b/test/orm/test_mapper.py @@ -1328,9 +1328,11 @@ class OptionsTest(_fixtures.FixtureTest): @testing.resolve_artifact_names def test_eager_degrade(self): - """An eager relationship automatically degrades to a lazy relationship if eager columns are not available""" + """An eager relationship automatically degrades to a lazy relationship + if eager columns are not available""" mapper(User, users, properties=dict( - addresses = relationship(mapper(Address, addresses), lazy='joined'))) + addresses = relationship(mapper(Address, addresses), + lazy='joined', order_by=addresses.c.id))) sess = create_session() # first test straight eager load, 1 statement diff --git a/test/orm/test_query.py b/test/orm/test_query.py index aa95db5e78..ee06241974 100644 --- a/test/orm/test_query.py +++ b/test/orm/test_query.py @@ -2721,34 +2721,51 @@ class InstancesTest(QueryTest, AssertsCompiledSQL): def test_from_alias(self): - query = users.select(users.c.id==7).union(users.select(users.c.id>7)).alias('ulist').outerjoin(addresses).select(use_labels=True,order_by=['ulist.id', addresses.c.id]) + query = users.select(users.c.id==7).\ + union(users.select(users.c.id>7)).\ + alias('ulist').\ + outerjoin(addresses).\ + select(use_labels=True, + order_by=['ulist.id', addresses.c.id]) sess =create_session() q = sess.query(User) def go(): - l = list(q.options(contains_alias('ulist'), contains_eager('addresses')).instances(query.execute())) + l = list(q.options(contains_alias('ulist'), + contains_eager('addresses')).\ + instances(query.execute())) assert self.static.user_address_result == l self.assert_sql_count(testing.db, go, 1) sess.expunge_all() def go(): - l = q.options(contains_alias('ulist'), contains_eager('addresses')).from_statement(query).all() + l = q.options(contains_alias('ulist'), + contains_eager('addresses')).\ + from_statement(query).all() assert self.static.user_address_result == l self.assert_sql_count(testing.db, go, 1) # better way. use select_from() def go(): - l = sess.query(User).select_from(query).options(contains_eager('addresses')).all() + l = sess.query(User).select_from(query).\ + options(contains_eager('addresses')).all() assert self.static.user_address_result == l self.assert_sql_count(testing.db, go, 1) - # same thing, but alias addresses, so that the adapter generated by select_from() is wrapped within + # same thing, but alias addresses, so that the adapter + # generated by select_from() is wrapped within # the adapter created by contains_eager() adalias = addresses.alias() - query = users.select(users.c.id==7).union(users.select(users.c.id>7)).alias('ulist').outerjoin(adalias).select(use_labels=True,order_by=['ulist.id', adalias.c.id]) + query = users.select(users.c.id==7).\ + union(users.select(users.c.id>7)).\ + alias('ulist').\ + outerjoin(adalias).\ + select(use_labels=True, + order_by=['ulist.id', adalias.c.id]) def go(): - l = sess.query(User).select_from(query).options(contains_eager('addresses', alias=adalias)).all() + l = sess.query(User).select_from(query).\ + options(contains_eager('addresses', alias=adalias)).all() assert self.static.user_address_result == l self.assert_sql_count(testing.db, go, 1) @@ -2756,13 +2773,19 @@ class InstancesTest(QueryTest, AssertsCompiledSQL): sess = create_session() # test that contains_eager suppresses the normal outer join rendering - q = sess.query(User).outerjoin(User.addresses).options(contains_eager(User.addresses)).order_by(User.id) - self.assert_compile(q.with_labels().statement, - "SELECT addresses.id AS addresses_id, addresses.user_id AS addresses_user_id, "\ - "addresses.email_address AS addresses_email_address, users.id AS users_id, "\ - "users.name AS users_name FROM users LEFT OUTER JOIN addresses "\ - "ON users.id = addresses.user_id ORDER BY users.id" - , dialect=default.DefaultDialect()) + q = sess.query(User).outerjoin(User.addresses).\ + options(contains_eager(User.addresses)).\ + order_by(User.id, addresses.c.id) + self.assert_compile(q.with_labels().statement, + 'SELECT addresses.id AS addresses_id, ' + 'addresses.user_id AS addresses_user_id, ' + 'addresses.email_address AS ' + 'addresses_email_address, users.id AS ' + 'users_id, users.name AS users_name FROM ' + 'users LEFT OUTER JOIN addresses ON ' + 'users.id = addresses.user_id ORDER BY ' + 'users.id, addresses.id', + dialect=default.DefaultDialect()) def go(): assert self.static.user_address_result == q.all() @@ -2770,7 +2793,7 @@ class InstancesTest(QueryTest, AssertsCompiledSQL): sess.expunge_all() adalias = addresses.alias() - q = sess.query(User).select_from(users.outerjoin(adalias)).options(contains_eager(User.addresses, alias=adalias)) + q = sess.query(User).select_from(users.outerjoin(adalias)).options(contains_eager(User.addresses, alias=adalias)).order_by(User.id, adalias.c.id) def go(): eq_(self.static.user_address_result, q.order_by(User.id).all()) self.assert_sql_count(testing.db, go, 1)