summaryrefslogtreecommitdiff
path: root/src/mango/test/02-basic-find-test.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/mango/test/02-basic-find-test.py')
-rw-r--r--src/mango/test/02-basic-find-test.py48
1 files changed, 47 insertions, 1 deletions
diff --git a/src/mango/test/02-basic-find-test.py b/src/mango/test/02-basic-find-test.py
index a8725ffa8..82554a112 100644
--- a/src/mango/test/02-basic-find-test.py
+++ b/src/mango/test/02-basic-find-test.py
@@ -222,6 +222,52 @@ class BasicFindTests(mango.UserDocsTests):
docs2 = list(reversed(sorted(docs1, key=lambda d: d["age"])))
assert docs1 is not docs2 and docs1 == docs2
+ def test_sort_desc_complex(self):
+ docs = self.db.find({
+ "company": {"$lt": "M"},
+ "$or": [
+ {"company": "Dreamia"},
+ {"manager": True}
+ ]
+ }, sort=[{"company":"desc"}, {"manager":"desc"}])
+
+ companies_returned = list(d["company"] for d in docs)
+ desc_companies = sorted(companies_returned, reverse=True)
+ self.assertEqual(desc_companies, companies_returned)
+
+ def test_sort_with_primary_sort_not_in_selector(self):
+ try:
+ docs = self.db.find({
+ "name.last": {"$lt": "M"}
+ }, sort=[{"name.first":"desc"}])
+ except Exception as e:
+ self.assertEqual(e.response.status_code, 400)
+ resp = e.response.json()
+ self.assertEqual(resp["error"], "no_usable_index")
+ else:
+ raise AssertionError("expected find error")
+
+ def test_sort_exists_true(self):
+ docs1 = self.db.find({"age": {"$gt": 0, "$exists": True}}, sort=[{"age":"asc"}])
+ docs2 = list(sorted(docs1, key=lambda d: d["age"]))
+ assert docs1 is not docs2 and docs1 == docs2
+
+ def test_sort_desc_complex_error(self):
+ try:
+ self.db.find({
+ "company": {"$lt": "M"},
+ "$or": [
+ {"company": "Dreamia"},
+ {"manager": True}
+ ]
+ }, sort=[{"company":"desc"}])
+ except Exception as e:
+ self.assertEqual(e.response.status_code, 400)
+ resp = e.response.json()
+ self.assertEqual(resp["error"], "no_usable_index")
+ else:
+ raise AssertionError("expected find error")
+
def test_fields(self):
selector = {"age": {"$gt": 0}}
docs = self.db.find(selector, fields=["user_id", "location.address"])
@@ -273,5 +319,5 @@ class BasicFindTests(mango.UserDocsTests):
assert explain["mrargs"]["update"] == True
assert explain["mrargs"]["reduce"] == False
assert explain["mrargs"]["start_key"] == [0]
- assert explain["mrargs"]["end_key"] == [{}]
+ assert explain["mrargs"]["end_key"] == ["<MAX>"]
assert explain["mrargs"]["include_docs"] == True