skip older mongodb decorator
This commit is contained in:
parent
e6dcb39036
commit
4acd7a5b75
@ -9,7 +9,7 @@ import pymongo
|
||||
from mongoengine import *
|
||||
from mongoengine.connection import get_db
|
||||
|
||||
from tests.utils import get_mongodb_version, skip_in_old_mongodb
|
||||
from tests.utils import get_mongodb_version, skip_older_mongodb
|
||||
|
||||
__all__ = ("IndexesTest", )
|
||||
|
||||
@ -865,9 +865,8 @@ class IndexesTest(unittest.TestCase):
|
||||
info['provider_ids.foo_1_provider_ids.bar_1']['key'])
|
||||
self.assertTrue(info['provider_ids.foo_1_provider_ids.bar_1']['sparse'])
|
||||
|
||||
@skip_older_mongodb
|
||||
def test_text_indexes(self):
|
||||
skip_in_old_mongodb('Text search is disabled by default in MongoDB < v2.6')
|
||||
|
||||
class Book(Document):
|
||||
title = DictField()
|
||||
meta = {
|
||||
|
@ -7,7 +7,7 @@ from pymongo.errors import OperationFailure
|
||||
from mongoengine import *
|
||||
from mongoengine.connection import get_connection
|
||||
|
||||
from tests.utils import MongoDBTestCase, skip_in_old_mongodb
|
||||
from tests.utils import MongoDBTestCase, get_mongodb_version
|
||||
|
||||
|
||||
__all__ = ("GeoQueriesTest",)
|
||||
@ -314,7 +314,9 @@ class GeoQueriesTest(MongoDBTestCase):
|
||||
self.assertEqual(events.count(), 0)
|
||||
|
||||
# $minDistance was only added in MongoDB v2.6, skip for older versions
|
||||
skip_in_old_mongodb('Need MongoDB v2.6+')
|
||||
mongodb_ver = get_mongodb_ver()
|
||||
if mongodb_ver[0] == 2 and mongodb_ver[1] < 6:
|
||||
raise SkipTest('Need MongoDB v2.6+')
|
||||
|
||||
# ensure min_distance and max_distance combine well
|
||||
events = Event.objects(location__near=[-87.67892, 41.9120459],
|
||||
|
@ -19,7 +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
|
||||
from tests.utils import skip_older_mongodb, skip_pymongo3
|
||||
|
||||
|
||||
__all__ = ("QuerySetTest",)
|
||||
|
||||
@ -34,37 +35,6 @@ class db_ops_tracker(query_counter):
|
||||
return list(self.db.system.profile.find(ignore_query))
|
||||
|
||||
|
||||
def skip_older_mongodb(f):
|
||||
def _inner(*args, **kwargs):
|
||||
connection = get_connection()
|
||||
info = connection.test.command('buildInfo')
|
||||
mongodb_version = tuple([int(i) for i in info['version'].split('.')])
|
||||
|
||||
if mongodb_version < (2, 6):
|
||||
raise SkipTest("Need MongoDB version 2.6+")
|
||||
|
||||
return f(*args, **kwargs)
|
||||
|
||||
_inner.__name__ = f.__name__
|
||||
_inner.__doc__ = f.__doc__
|
||||
|
||||
return _inner
|
||||
|
||||
|
||||
def skip_pymongo3(f):
|
||||
def _inner(*args, **kwargs):
|
||||
|
||||
if IS_PYMONGO_3:
|
||||
raise SkipTest("Useless with PyMongo 3+")
|
||||
|
||||
return f(*args, **kwargs)
|
||||
|
||||
_inner.__name__ = f.__name__
|
||||
_inner.__doc__ = f.__doc__
|
||||
|
||||
return _inner
|
||||
|
||||
|
||||
class QuerySetTest(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
@ -601,9 +571,8 @@ class QuerySetTest(unittest.TestCase):
|
||||
self.assertEqual(post.comments[0].by, 'joe')
|
||||
self.assertEqual(post.comments[0].votes.score, 4)
|
||||
|
||||
@skip_older_mongodb
|
||||
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()
|
||||
@ -615,6 +584,11 @@ class QuerySetTest(unittest.TestCase):
|
||||
Scores.objects(id=scores.id).update(min__low_score=250)
|
||||
self.assertEqual(Scores.objects.get(id=scores.id).low_score, 150)
|
||||
|
||||
Scores.objects(id=scores.id).update(max__high_score=250)
|
||||
self.assertEqual(Scores.objects.get(id=scores.id).low_score, 250)
|
||||
Scores.objects(id=scores.id).update(max__high_score=100)
|
||||
self.assertEqual(Scores.objects.get(id=scores.id).low_score, 250)
|
||||
|
||||
def test_updates_can_have_match_operators(self):
|
||||
|
||||
class Comment(EmbeddedDocument):
|
||||
@ -4896,6 +4870,7 @@ class QuerySetTest(unittest.TestCase):
|
||||
self.assertTrue(Person.objects._has_data(),
|
||||
'Cursor has data and returned False')
|
||||
|
||||
@skip_older_mongodb
|
||||
def test_queryset_aggregation_framework(self):
|
||||
class Person(Document):
|
||||
name = StringField()
|
||||
@ -4930,17 +4905,13 @@ class QuerySetTest(unittest.TestCase):
|
||||
{'_id': p1.pk, 'name': "ISABELLA LUANNA"}
|
||||
])
|
||||
|
||||
data = Person.objects(
|
||||
age__gte=17, age__lte=40).order_by('-age').aggregate(
|
||||
{'$group': {
|
||||
'_id': None,
|
||||
'total': {'$sum': 1},
|
||||
'avg': {'$avg': '$age'}
|
||||
}
|
||||
}
|
||||
|
||||
)
|
||||
|
||||
data = Person.objects(age__gte=17, age__lte=40).order_by('-age').aggregate({
|
||||
'$group': {
|
||||
'_id': None,
|
||||
'total': {'$sum': 1},
|
||||
'avg': {'$avg': '$age'}
|
||||
}
|
||||
})
|
||||
self.assertEqual(list(data), [
|
||||
{'_id': None, 'avg': 29, 'total': 2}
|
||||
])
|
||||
|
@ -4,6 +4,7 @@ from nose.plugins.skip import SkipTest
|
||||
|
||||
from mongoengine import connect
|
||||
from mongoengine.connection import get_db, get_connection
|
||||
from mongoengine.python_support import IS_PYMONGO_3
|
||||
|
||||
|
||||
MONGO_TEST_DB = 'mongoenginetest'
|
||||
@ -32,10 +33,33 @@ def get_mongodb_version():
|
||||
return get_connection().server_info()['versionArray']
|
||||
|
||||
|
||||
def skip_in_old_mongodb(msg):
|
||||
def skip_older_mongodb(f):
|
||||
"""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)
|
||||
def _inner(*args, **kwargs):
|
||||
mongodb_ver = get_mongodb_version()
|
||||
if mongodb_ver[0] == 2 and mongodb_ver[1] < 6:
|
||||
raise SkipTest('Need MongoDB v2.6+')
|
||||
return f(*args, **kwargs)
|
||||
|
||||
_inner.__name__ = f.__name__
|
||||
_inner.__doc__ = f.__doc__
|
||||
|
||||
return _inner
|
||||
|
||||
|
||||
def skip_pymongo3(f):
|
||||
"""Raise a SkipTest exception if we're running a test against
|
||||
PyMongo v3.x.
|
||||
"""
|
||||
def _inner(*args, **kwargs):
|
||||
if IS_PYMONGO_3:
|
||||
raise SkipTest("Useless with PyMongo 3+")
|
||||
return f(*args, **kwargs)
|
||||
|
||||
_inner.__name__ = f.__name__
|
||||
_inner.__doc__ = f.__doc__
|
||||
|
||||
return _inner
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user