get_mongodb_version tests helper + fix indexing tests in mongodb v2.4

This commit is contained in:
Stefan Wojcik 2017-02-25 20:21:20 -05:00
parent d39f5197cb
commit 71ccfeac3c
4 changed files with 23 additions and 14 deletions

View File

@ -9,7 +9,8 @@ from nose.plugins.skip import SkipTest
from datetime import datetime
from mongoengine import *
from mongoengine.connection import get_db, get_connection
from mongoengine.connection import get_db
from tests.utils import get_mongodb_version
__all__ = ("IndexesTest", )
@ -494,8 +495,7 @@ class IndexesTest(unittest.TestCase):
obj = Test(a=1)
obj.save()
connection = get_connection()
IS_MONGODB_3 = connection.server_info()['versionArray'][0] >= 3
IS_MONGODB_3 = get_mongodb_version()[0] >= 3
# Need to be explicit about covered indexes as mongoDB doesn't know if
# the documents returned might have more keys in that here.
@ -736,8 +736,7 @@ class IndexesTest(unittest.TestCase):
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')
connection = get_connection()
version_array = connection.server_info()['versionArray']
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')
@ -875,6 +874,9 @@ 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')
class Book(Document):
title = DictField()

View File

@ -603,12 +603,13 @@ class QuerySetTest(unittest.TestCase):
class Scores(Document):
high_score = IntField()
low_score = IntField()
scores = Scores(high_score=800, low_score=200)
scores.save()
scores = Scores.objects.create(high_score=800, low_score=200)
Scores.objects(id=scores.id).update(min__low_score=150)
self.assertEqual(Scores.objects(id=scores.id).get().low_score, 150)
self.assertEqual(Scores.objects.get(id=scores.id).low_score, 150)
Scores.objects(id=scores.id).update(min__low_score=250)
self.assertEqual(Scores.objects(id=scores.id).get().low_score, 150)
self.assertEqual(Scores.objects.get(id=scores.id).low_score, 150)
def test_updates_can_have_match_operators(self):

View File

@ -35,8 +35,7 @@ class ConnectionTest(unittest.TestCase):
mongoengine.connection._dbs = {}
def test_connect(self):
"""Ensure that the connect() method works properly.
"""
"""Ensure that the connect() method works properly."""
connect('mongoenginetest')
conn = get_connection()
@ -146,8 +145,7 @@ class ConnectionTest(unittest.TestCase):
self.assertEqual(expected_connection, actual_connection)
def test_connect_uri(self):
"""Ensure that the connect() method works properly with uri's
"""
"""Ensure that the connect() method works properly with URIs."""
c = connect(db='mongoenginetest', alias='admin')
c.admin.system.users.remove({})
c.mongoenginetest.system.users.remove({})
@ -173,6 +171,7 @@ class ConnectionTest(unittest.TestCase):
c.admin.system.users.remove({})
c.mongoenginetest.system.users.remove({})
self.assertTrue(False)
def test_connect_uri_without_db(self):
"""Ensure connect() method works properly if the URI doesn't

View File

@ -1,7 +1,7 @@
import unittest
from mongoengine import connect
from mongoengine.connection import get_db
from mongoengine.connection import get_db, get_connection
MONGO_TEST_DB = 'mongoenginetest'
@ -20,3 +20,10 @@ class MongoDBTestCase(unittest.TestCase):
@classmethod
def tearDownClass(cls):
cls._connection.drop_database(MONGO_TEST_DB)
def get_mongodb_version():
"""Return the version tuple of the MongoDB server that the default
connection is connected to.
"""
return get_connection().server_info()['versionArray']