diff options
Diffstat (limited to 'src/mango/test/14-json-pagination-test.py')
-rw-r--r-- | src/mango/test/14-json-pagination-test.py | 269 |
1 files changed, 0 insertions, 269 deletions
diff --git a/src/mango/test/14-json-pagination-test.py b/src/mango/test/14-json-pagination-test.py deleted file mode 100644 index 2d2430152..000000000 --- a/src/mango/test/14-json-pagination-test.py +++ /dev/null @@ -1,269 +0,0 @@ -# Licensed under the Apache License, Version 2.0 (the "License"); you may not -# use this file except in compliance with the License. You may obtain a copy of -# the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -# License for the specific language governing permissions and limitations under -# the License. - -import mango -import copy - -DOCS = [ - {"_id": "100", "name": "Jimi", "location": "AUS", "user_id": 1, "same": "value"}, - {"_id": "200", "name": "Eddie", "location": "BRA", "user_id": 2, "same": "value"}, - {"_id": "300", "name": "Harry", "location": "CAN", "user_id": 3, "same": "value"}, - {"_id": "400", "name": "Eddie", "location": "DEN", "user_id": 4, "same": "value"}, - {"_id": "500", "name": "Jones", "location": "ETH", "user_id": 5, "same": "value"}, - { - "_id": "600", - "name": "Winnifried", - "location": "FRA", - "user_id": 6, - "same": "value", - }, - {"_id": "700", "name": "Marilyn", "location": "GHA", "user_id": 7, "same": "value"}, - {"_id": "800", "name": "Sandra", "location": "ZAR", "user_id": 8, "same": "value"}, -] - - -class PaginateJsonDocs(mango.DbPerClass): - def setUp(self): - self.db.recreate() - self.db.save_docs(copy.deepcopy(DOCS)) - - def test_all_docs_paginate_to_end(self): - selector = {"_id": {"$gt": 0}} - # Page 1 - resp = self.db.find(selector, fields=["_id"], limit=5, return_raw=True) - bookmark = resp["bookmark"] - docs = resp["docs"] - assert docs[0]["_id"] == "100" - assert len(docs) == 5 - - # Page 2 - resp = self.db.find( - selector, fields=["_id"], bookmark=bookmark, limit=5, return_raw=True - ) - bookmark = resp["bookmark"] - docs = resp["docs"] - assert docs[0]["_id"] == "600" - assert len(docs) == 3 - - # Page 3 - resp = self.db.find(selector, bookmark=bookmark, limit=5, return_raw=True) - bookmark = resp["bookmark"] - docs = resp["docs"] - assert len(docs) == 0 - - def test_return_previous_bookmark_for_empty(self): - selector = {"_id": {"$gt": 0}} - # Page 1 - resp = self.db.find(selector, fields=["_id"], return_raw=True) - bookmark1 = resp["bookmark"] - docs = resp["docs"] - assert len(docs) == 8 - - resp = self.db.find( - selector, fields=["_id"], return_raw=True, bookmark=bookmark1 - ) - bookmark2 = resp["bookmark"] - docs = resp["docs"] - assert len(docs) == 0 - - resp = self.db.find( - selector, fields=["_id"], return_raw=True, bookmark=bookmark2 - ) - bookmark3 = resp["bookmark"] - docs = resp["docs"] - assert bookmark3 == bookmark2 - assert len(docs) == 0 - - def test_all_docs_with_skip(self): - selector = {"_id": {"$gt": 0}} - # Page 1 - resp = self.db.find(selector, fields=["_id"], skip=2, limit=5, return_raw=True) - bookmark = resp["bookmark"] - docs = resp["docs"] - assert docs[0]["_id"] == "300" - assert len(docs) == 5 - - # Page 2 - resp = self.db.find( - selector, fields=["_id"], bookmark=bookmark, limit=5, return_raw=True - ) - bookmark = resp["bookmark"] - docs = resp["docs"] - assert docs[0]["_id"] == "800" - assert len(docs) == 1 - resp = self.db.find(selector, bookmark=bookmark, limit=5, return_raw=True) - bookmark = resp["bookmark"] - docs = resp["docs"] - assert len(docs) == 0 - - def test_all_docs_reverse(self): - selector = {"_id": {"$gt": 0}} - resp = self.db.find( - selector, fields=["_id"], sort=[{"_id": "desc"}], limit=5, return_raw=True - ) - docs = resp["docs"] - bookmark1 = resp["bookmark"] - assert len(docs) == 5 - assert docs[0]["_id"] == "800" - - resp = self.db.find( - selector, - fields=["_id"], - sort=[{"_id": "desc"}], - limit=5, - return_raw=True, - bookmark=bookmark1, - ) - docs = resp["docs"] - bookmark2 = resp["bookmark"] - assert len(docs) == 3 - assert docs[0]["_id"] == "300" - - resp = self.db.find( - selector, - fields=["_id"], - sort=[{"_id": "desc"}], - limit=5, - return_raw=True, - bookmark=bookmark2, - ) - docs = resp["docs"] - assert len(docs) == 0 - - def test_bad_bookmark(self): - try: - self.db.find({"_id": {"$gt": 0}}, bookmark="bad-bookmark") - except Exception as e: - resp = e.response.json() - assert resp["error"] == "invalid_bookmark" - assert resp["reason"] == 'Invalid bookmark value: "bad-bookmark"' - assert e.response.status_code == 400 - else: - raise AssertionError("Should have thrown error for bad bookmark") - - def test_throws_error_on_text_bookmark(self): - bookmark = ( - "g2wAAAABaANkABFub2RlMUBjb3VjaGRiLm5ldGwAAAACYQBiP____2poAkY_8AAAAAAAAGEHag" - ) - try: - self.db.find({"_id": {"$gt": 0}}, bookmark=bookmark) - except Exception as e: - resp = e.response.json() - assert resp["error"] == "invalid_bookmark" - assert e.response.status_code == 400 - else: - raise AssertionError("Should have thrown error for bad bookmark") - - def test_index_pagination(self): - self.db.create_index(["location"]) - selector = {"location": {"$gt": "A"}} - resp = self.db.find(selector, fields=["_id"], limit=5, return_raw=True) - docs = resp["docs"] - bookmark1 = resp["bookmark"] - assert len(docs) == 5 - assert docs[0]["_id"] == "100" - - resp = self.db.find( - selector, fields=["_id"], limit=5, return_raw=True, bookmark=bookmark1 - ) - docs = resp["docs"] - bookmark2 = resp["bookmark"] - assert len(docs) == 3 - assert docs[0]["_id"] == "600" - - resp = self.db.find( - selector, fields=["_id"], limit=5, return_raw=True, bookmark=bookmark2 - ) - docs = resp["docs"] - assert len(docs) == 0 - - def test_index_pagination_two_keys(self): - self.db.create_index(["location", "user_id"]) - selector = {"location": {"$gt": "A"}, "user_id": {"$gte": 1}} - resp = self.db.find(selector, fields=["_id"], limit=5, return_raw=True) - docs = resp["docs"] - bookmark1 = resp["bookmark"] - assert len(docs) == 5 - assert docs[0]["_id"] == "100" - - resp = self.db.find( - selector, fields=["_id"], limit=5, return_raw=True, bookmark=bookmark1 - ) - docs = resp["docs"] - bookmark2 = resp["bookmark"] - assert len(docs) == 3 - assert docs[0]["_id"] == "600" - - resp = self.db.find( - selector, fields=["_id"], limit=5, return_raw=True, bookmark=bookmark2 - ) - docs = resp["docs"] - assert len(docs) == 0 - - def test_index_pagination_reverse(self): - self.db.create_index(["location", "user_id"]) - selector = {"location": {"$gt": "A"}, "user_id": {"$gte": 1}} - sort = [{"location": "desc"}, {"user_id": "desc"}] - resp = self.db.find( - selector, fields=["_id"], sort=sort, limit=5, return_raw=True - ) - docs = resp["docs"] - bookmark1 = resp["bookmark"] - assert len(docs) == 5 - assert docs[0]["_id"] == "800" - - resp = self.db.find( - selector, - fields=["_id"], - limit=5, - sort=sort, - return_raw=True, - bookmark=bookmark1, - ) - docs = resp["docs"] - bookmark2 = resp["bookmark"] - assert len(docs) == 3 - assert docs[0]["_id"] == "300" - - resp = self.db.find( - selector, - fields=["_id"], - limit=5, - sort=sort, - return_raw=True, - bookmark=bookmark2, - ) - docs = resp["docs"] - assert len(docs) == 0 - - def test_index_pagination_same_emitted_key(self): - self.db.create_index(["same"]) - selector = {"same": {"$gt": ""}} - resp = self.db.find(selector, fields=["_id"], limit=5, return_raw=True) - docs = resp["docs"] - bookmark1 = resp["bookmark"] - assert len(docs) == 5 - assert docs[0]["_id"] == "100" - - resp = self.db.find( - selector, fields=["_id"], limit=5, return_raw=True, bookmark=bookmark1 - ) - docs = resp["docs"] - bookmark2 = resp["bookmark"] - assert len(docs) == 3 - assert docs[0]["_id"] == "600" - - resp = self.db.find( - selector, fields=["_id"], limit=5, return_raw=True, bookmark=bookmark2 - ) - docs = resp["docs"] - assert len(docs) == 0 |