diff options
Diffstat (limited to 'src/mango/test/02-basic-find-test.py')
-rw-r--r-- | src/mango/test/02-basic-find-test.py | 48 |
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 |