diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-07-29 18:50:18 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-07-29 18:57:04 -0400 |
| commit | fb647e5219a87cf15c026711ba0943ba3a080316 (patch) | |
| tree | 006eca5418ce1a56d65457bc944ad939698afcd7 /test/orm | |
| parent | 05f28ba2fb6b9fe1e36748bb16969afc8375a9fb (diff) | |
| download | sqlalchemy-fb647e5219a87cf15c026711ba0943ba3a080316.tar.gz | |
Clarify order_by(False)
It wasn't clear how this differs from order_by(None);
add more tests and document that this has to do with whether or
not mapper.order_by will be re-enabled as well.
Change-Id: I332e8ac60c999b38c5a243f1cb72de3cf77891b6
Diffstat (limited to 'test/orm')
| -rw-r--r-- | test/orm/test_query.py | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/test/orm/test_query.py b/test/orm/test_query.py index 86be1879e..493f6a7c8 100644 --- a/test/orm/test_query.py +++ b/test/orm/test_query.py @@ -1625,6 +1625,84 @@ class ExpressionTest(QueryTest, AssertsCompiledSQL): q1._no_criterion_assertion("foo") + def test_order_by_plain(self): + User = self.classes.User + s = create_session() + + q1 = s.query(User.id, User.name).order_by(User.name) + self.assert_compile( + select([q1]), + "SELECT users_id, users_name FROM (SELECT users.id AS users_id, " + "users.name AS users_name FROM users ORDER BY users.name)" + ) + + def test_order_by_append(self): + User = self.classes.User + s = create_session() + + q1 = s.query(User.id, User.name).order_by(User.name) + + # test append something to order_by + self.assert_compile( + select([q1.order_by(User.id)]), + "SELECT users_id, users_name FROM (SELECT users.id AS users_id, " + "users.name AS users_name FROM users " + "ORDER BY users.name, users.id)" + ) + + def test_order_by_cancellation(self): + User = self.classes.User + s = create_session() + + q1 = s.query(User.id, User.name).order_by(User.name) + # test cancellation by using None, replacement with something else + self.assert_compile( + select([q1.order_by(None).order_by(User.id)]), + "SELECT users_id, users_name FROM (SELECT users.id AS users_id, " + "users.name AS users_name FROM users ORDER BY users.id)" + ) + + # test cancellation by using None, replacement with nothing + self.assert_compile( + select([q1.order_by(None)]), + "SELECT users_id, users_name FROM (SELECT users.id AS users_id, " + "users.name AS users_name FROM users)" + ) + + def test_order_by_cancellation_false(self): + User = self.classes.User + s = create_session() + + q1 = s.query(User.id, User.name).order_by(User.name) + # test cancellation by using None, replacement with something else + self.assert_compile( + select([q1.order_by(False).order_by(User.id)]), + "SELECT users_id, users_name FROM (SELECT users.id AS users_id, " + "users.name AS users_name FROM users ORDER BY users.id)" + ) + + # test cancellation by using None, replacement with nothing + self.assert_compile( + select([q1.order_by(False)]), + "SELECT users_id, users_name FROM (SELECT users.id AS users_id, " + "users.name AS users_name FROM users)" + ) + + def test_order_by_cancelled_allows_assertions(self): + User = self.classes.User + s = create_session() + + q1 = s.query(User.id, User.name).order_by(User.name).order_by(None) + + q1._no_criterion_assertion("foo") + + def test_legacy_order_by_cancelled_allows_assertions(self): + User = self.classes.User + s = create_session() + + q1 = s.query(User.id, User.name).order_by(User.name).order_by(False) + + q1._no_criterion_assertion("foo") class ColumnPropertyTest(_fixtures.FixtureTest, AssertsCompiledSQL): __dialect__ = 'default' |
