fix queryset tests in mongodb v2.4

This commit is contained in:
Stefan Wojcik 2017-02-25 20:55:59 -05:00
parent 71ccfeac3c
commit 70faaf445e
4 changed files with 26 additions and 18 deletions

View File

@ -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,

View File

@ -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()

View File

@ -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')

View File

@ -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)