diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-09-28 00:39:06 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-09-28 00:39:06 +0000 |
commit | 5f75197e86059d7e4bbe20558c98011d89f9cfda (patch) | |
tree | 5225252c7bb6a04ec656dcd8db283dc48a950e26 /test/orm/query.py | |
parent | 15f1a5df20291f77a0a6e83ba9dd5527034237ad (diff) | |
download | sqlalchemy-5f75197e86059d7e4bbe20558c98011d89f9cfda.tar.gz |
- Fixed up slices on Query (i.e. query[x:y]) to work properly
for zero length slices, slices with None on either end.
[ticket:1177]
Diffstat (limited to 'test/orm/query.py')
-rw-r--r-- | test/orm/query.py | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/test/orm/query.py b/test/orm/query.py index ac961d9a0..5d77f2d81 100644 --- a/test/orm/query.py +++ b/test/orm/query.py @@ -497,13 +497,53 @@ class CompileTest(QueryTest): l = list(session.query(User).instances(s.execute(emailad = 'jack@bean.com'))) assert [User(id=7)] == l +# more slice tests are available in test/orm/generative.py class SliceTest(QueryTest): def test_first(self): assert User(id=7) == create_session().query(User).first() assert create_session().query(User).filter(User.id==27).first() is None - # more slice tests are available in test/orm/generative.py + @testing.fails_on_everything_except('sqlite') + def test_limit_offset_applies(self): + """Test that the expected LIMIT/OFFSET is applied for slices. + + The LIMIT/OFFSET syntax differs slightly on all databases, and + query[x:y] executes immediately, so we are asserting against + SQL strings using sqlite's syntax. + + """ + sess = create_session() + q = sess.query(User) + + self.assert_sql(testing.db, lambda: q[10:20], [ + ("SELECT users.id AS users_id, users.name AS users_name FROM users LIMIT 10 OFFSET 10", {}) + ]) + + self.assert_sql(testing.db, lambda: q[:20], [ + ("SELECT users.id AS users_id, users.name AS users_name FROM users LIMIT 20 OFFSET 0", {}) + ]) + + self.assert_sql(testing.db, lambda: q[5:], [ + ("SELECT users.id AS users_id, users.name AS users_name FROM users LIMIT -1 OFFSET 5", {}) + ]) + + self.assert_sql(testing.db, lambda: q[2:2], []) + + self.assert_sql(testing.db, lambda: q[-2:-5], []) + + self.assert_sql(testing.db, lambda: q[-5:-2], [ + ("SELECT users.id AS users_id, users.name AS users_name FROM users", {}) + ]) + + self.assert_sql(testing.db, lambda: q[-5:], [ + ("SELECT users.id AS users_id, users.name AS users_name FROM users", {}) + ]) + + self.assert_sql(testing.db, lambda: q[:], [ + ("SELECT users.id AS users_id, users.name AS users_name FROM users", {}) + ]) + class TextTest(QueryTest): def test_fulltext(self): |