From 71ccfeac3c7caea0ec511903d7cc880eb93a5950 Mon Sep 17 00:00:00 2001 From: Stefan Wojcik Date: Sat, 25 Feb 2017 20:21:20 -0500 Subject: [PATCH] get_mongodb_version tests helper + fix indexing tests in mongodb v2.4 --- tests/document/indexes.py | 12 +++++++----- tests/queryset/queryset.py | 9 +++++---- tests/test_connection.py | 7 +++---- tests/utils.py | 9 ++++++++- 4 files changed, 23 insertions(+), 14 deletions(-) diff --git a/tests/document/indexes.py b/tests/document/indexes.py index af93e7db..a7c381a1 100644 --- a/tests/document/indexes.py +++ b/tests/document/indexes.py @@ -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() diff --git a/tests/queryset/queryset.py b/tests/queryset/queryset.py index c54fa13d..631a35ab 100644 --- a/tests/queryset/queryset.py +++ b/tests/queryset/queryset.py @@ -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): diff --git a/tests/test_connection.py b/tests/test_connection.py index a1d3bfb6..c6d7c863 100644 --- a/tests/test_connection.py +++ b/tests/test_connection.py @@ -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 diff --git a/tests/utils.py b/tests/utils.py index 128bbff0..e3166d9c 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -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']