From 70faaf445eb6eca24372b688798a81e347e51546 Mon Sep 17 00:00:00 2001 From: Stefan Wojcik Date: Sat, 25 Feb 2017 20:55:59 -0500 Subject: [PATCH] fix queryset tests in mongodb v2.4 --- mongoengine/queryset/base.py | 2 +- tests/document/indexes.py | 18 ++++-------------- tests/queryset/queryset.py | 12 +++++++++--- tests/utils.py | 12 ++++++++++++ 4 files changed, 26 insertions(+), 18 deletions(-) diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index 7e485686..bf19aac6 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -1177,7 +1177,7 @@ class BaseQuerySet(object): pipeline = initial_pipeline + list(pipeline) - return self._collection.aggregate(pipeline, cursor={}, **kwargs) + return self._collection.aggregate(pipeline, **kwargs) # JS functionality def map_reduce(self, map_f, reduce_f, output, finalize_f=None, limit=None, diff --git a/tests/document/indexes.py b/tests/document/indexes.py index a7c381a1..1bd750e0 100644 --- a/tests/document/indexes.py +++ b/tests/document/indexes.py @@ -2,15 +2,14 @@ import unittest import sys - -import pymongo - from nose.plugins.skip import SkipTest from datetime import datetime +import pymongo from mongoengine import * from mongoengine.connection import get_db -from tests.utils import get_mongodb_version + +from tests.utils import get_mongodb_version, skip_in_old_mongodb __all__ = ("IndexesTest", ) @@ -733,13 +732,6 @@ class IndexesTest(unittest.TestCase): Log.drop_collection() - if pymongo.version_tuple[0] < 2 and pymongo.version_tuple[1] < 3: - raise SkipTest('pymongo needs to be 2.3 or higher for this test') - - version_array = get_mongodb_version() - if version_array[0] < 2 and version_array[1] < 2: - raise SkipTest('MongoDB needs to be 2.2 or higher for this test') - # Indexes are lazy so use list() to perform query list(Log.objects) info = Log.objects._collection.index_information() @@ -874,9 +866,7 @@ class IndexesTest(unittest.TestCase): self.assertTrue(info['provider_ids.foo_1_provider_ids.bar_1']['sparse']) def test_text_indexes(self): - mongodb_ver = get_mongodb_version() - if mongodb_ver[0] == 2 and mongodb_ver[1] < 6: - raise SkipTest('Text search is disabled by default in MongoDB < v2.6') + skip_in_old_mongodb('Text search is disabled by default in MongoDB < v2.6') class Book(Document): title = DictField() diff --git a/tests/queryset/queryset.py b/tests/queryset/queryset.py index 631a35ab..c2885579 100644 --- a/tests/queryset/queryset.py +++ b/tests/queryset/queryset.py @@ -19,6 +19,8 @@ from mongoengine.python_support import IS_PYMONGO_3 from mongoengine.queryset import (DoesNotExist, MultipleObjectsReturned, QuerySet, QuerySetManager, queryset_manager) +from tests.utils import skip_in_old_mongodb + __all__ = ("QuerySetTest",) @@ -600,6 +602,8 @@ class QuerySetTest(unittest.TestCase): self.assertEqual(post.comments[0].votes.score, 4) def test_update_min_max(self): + skip_in_old_mongodb('$min is not supported in MongoDB < v2.6') + class Scores(Document): high_score = IntField() low_score = IntField() @@ -4977,11 +4981,13 @@ class QuerySetTest(unittest.TestCase): self.assertEquals(Animal.objects(folded_ears=True).count(), 1) self.assertEquals(Animal.objects(whiskers_length=5.1).count(), 1) - def test_loop_via_invalid_id_does_not_crash(self): + def test_loop_over_invalid_id_does_not_crash(self): class Person(Document): name = StringField() - Person.objects.delete() - Person._get_collection().update({"name": "a"}, {"$set": {"_id": ""}}, upsert=True) + + Person.drop_collection() + + Person._get_collection().insert({'name': 'a', 'id': ''}) for p in Person.objects(): self.assertEqual(p.name, 'a') diff --git a/tests/utils.py b/tests/utils.py index e3166d9c..52d4a3bd 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -1,8 +1,11 @@ import unittest +from nose.plugins.skip import SkipTest + from mongoengine import connect from mongoengine.connection import get_db, get_connection + MONGO_TEST_DB = 'mongoenginetest' @@ -27,3 +30,12 @@ def get_mongodb_version(): connection is connected to. """ return get_connection().server_info()['versionArray'] + + +def skip_in_old_mongodb(msg): + """Raise a SkipTest exception with a given message if we're working + with MongoDB version lower than v2.6. + """ + mongodb_ver = get_mongodb_version() + if mongodb_ver[0] == 2 and mongodb_ver[1] < 6: + raise SkipTest(msg)