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 datetime import datetime
from mongoengine import * 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", ) __all__ = ("IndexesTest", )
@ -494,8 +495,7 @@ class IndexesTest(unittest.TestCase):
obj = Test(a=1) obj = Test(a=1)
obj.save() obj.save()
connection = get_connection() IS_MONGODB_3 = get_mongodb_version()[0] >= 3
IS_MONGODB_3 = connection.server_info()['versionArray'][0] >= 3
# Need to be explicit about covered indexes as mongoDB doesn't know if # Need to be explicit about covered indexes as mongoDB doesn't know if
# the documents returned might have more keys in that here. # 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: 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') raise SkipTest('pymongo needs to be 2.3 or higher for this test')
connection = get_connection() version_array = get_mongodb_version()
version_array = connection.server_info()['versionArray']
if version_array[0] < 2 and version_array[1] < 2: if version_array[0] < 2 and version_array[1] < 2:
raise SkipTest('MongoDB needs to be 2.2 or higher for this test') 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']) self.assertTrue(info['provider_ids.foo_1_provider_ids.bar_1']['sparse'])
def test_text_indexes(self): 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): class Book(Document):
title = DictField() title = DictField()

View File

@ -603,12 +603,13 @@ class QuerySetTest(unittest.TestCase):
class Scores(Document): class Scores(Document):
high_score = IntField() high_score = IntField()
low_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) 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) 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): def test_updates_can_have_match_operators(self):

View File

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

View File

@ -1,7 +1,7 @@
import unittest import unittest
from mongoengine import connect from mongoengine import connect
from mongoengine.connection import get_db from mongoengine.connection import get_db, get_connection
MONGO_TEST_DB = 'mongoenginetest' MONGO_TEST_DB = 'mongoenginetest'
@ -20,3 +20,10 @@ class MongoDBTestCase(unittest.TestCase):
@classmethod @classmethod
def tearDownClass(cls): def tearDownClass(cls):
cls._connection.drop_database(MONGO_TEST_DB) 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']