From e3cd553f8211d473b54fb3c91da8bf9fa2ad053d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastien=20G=C3=A9rard?= Date: Fri, 4 Oct 2019 21:30:32 +0200 Subject: [PATCH] add latest pymongo 3.9 as part of the CI --- .travis.yml | 5 ++++- mongoengine/queryset/base.py | 1 + tests/queryset/test_queryset.py | 26 +++++++++----------------- tox.ini | 1 + 4 files changed, 15 insertions(+), 18 deletions(-) diff --git a/.travis.yml b/.travis.yml index 54a6befd..af1e2b14 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,10 +32,11 @@ env: global: - MONGODB_3_4=3.4.17 - MONGODB_3_6=3.6.12 + - PYMONGO_3_9=3.9 - PYMONGO_3_6=3.6 - PYMONGO_3_4=3.4 matrix: - - MONGODB=${MONGODB_3_4} PYMONGO=${PYMONGO_3_6} + - MONGODB=${MONGODB_3_4} PYMONGO=${PYMONGO_3_9} matrix: @@ -47,6 +48,8 @@ matrix: env: MONGODB=${MONGODB_3_4} PYMONGO=${PYMONGO_3_4} - python: 3.7 env: MONGODB=${MONGODB_3_6} PYMONGO=${PYMONGO_3_6} + - python: 3.7 + env: MONGODB=${MONGODB_3_6} PYMONGO=${PYMONGO_3_9} install: diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index cde06d54..a09cbf99 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -1639,6 +1639,7 @@ class BaseQuerySet(object): ).find(self._query, **self._cursor_args) else: self._cursor_obj = self._collection.find(self._query, **self._cursor_args) + # Apply "where" clauses to cursor if self._where_clause: where_clause = self._sub_js_fields(self._where_clause) diff --git a/tests/queryset/test_queryset.py b/tests/queryset/test_queryset.py index e7e59905..16213254 100644 --- a/tests/queryset/test_queryset.py +++ b/tests/queryset/test_queryset.py @@ -4641,43 +4641,35 @@ class TestQueryset(unittest.TestCase): bars = Bar.objects.read_preference(ReadPreference.SECONDARY_PREFERRED) self.assertEqual(bars._read_preference, ReadPreference.SECONDARY_PREFERRED) self.assertEqual( - bars._cursor._Cursor__read_preference, ReadPreference.SECONDARY_PREFERRED + bars._cursor.collection.read_preference, ReadPreference.SECONDARY_PREFERRED ) # Make sure that `.read_preference(...)` does accept string values. self.assertRaises(TypeError, Bar.objects.read_preference, "Primary") + def assert_read_pref(qs, expected_read_pref): + self.assertEqual(qs._read_preference, expected_read_pref) + self.assertEqual(qs._cursor.collection.read_preference, expected_read_pref) + # Make sure read preference is respected after a `.skip(...)`. bars = Bar.objects.skip(1).read_preference(ReadPreference.SECONDARY_PREFERRED) - self.assertEqual(bars._read_preference, ReadPreference.SECONDARY_PREFERRED) - self.assertEqual( - bars._cursor._Cursor__read_preference, ReadPreference.SECONDARY_PREFERRED - ) + assert_read_pref(bars, ReadPreference.SECONDARY_PREFERRED) # Make sure read preference is respected after a `.limit(...)`. bars = Bar.objects.limit(1).read_preference(ReadPreference.SECONDARY_PREFERRED) - self.assertEqual(bars._read_preference, ReadPreference.SECONDARY_PREFERRED) - self.assertEqual( - bars._cursor._Cursor__read_preference, ReadPreference.SECONDARY_PREFERRED - ) + assert_read_pref(bars, ReadPreference.SECONDARY_PREFERRED) # Make sure read preference is respected after an `.order_by(...)`. bars = Bar.objects.order_by("txt").read_preference( ReadPreference.SECONDARY_PREFERRED ) - self.assertEqual(bars._read_preference, ReadPreference.SECONDARY_PREFERRED) - self.assertEqual( - bars._cursor._Cursor__read_preference, ReadPreference.SECONDARY_PREFERRED - ) + assert_read_pref(bars, ReadPreference.SECONDARY_PREFERRED) # Make sure read preference is respected after a `.hint(...)`. bars = Bar.objects.hint([("txt", 1)]).read_preference( ReadPreference.SECONDARY_PREFERRED ) - self.assertEqual(bars._read_preference, ReadPreference.SECONDARY_PREFERRED) - self.assertEqual( - bars._cursor._Cursor__read_preference, ReadPreference.SECONDARY_PREFERRED - ) + assert_read_pref(bars, ReadPreference.SECONDARY_PREFERRED) def test_read_preference_aggregation_framework(self): class Bar(Document): diff --git a/tox.ini b/tox.ini index a1ae8444..b4a57818 100644 --- a/tox.ini +++ b/tox.ini @@ -8,5 +8,6 @@ deps = nose mg34: pymongo>=3.4,<3.5 mg36: pymongo>=3.6,<3.7 + mg39: pymongo>=3.9,<4.0 setenv = PYTHON_EGG_CACHE = {envdir}/python-eggs