Merge pull request #2445 from bagerard/fix_count_mongomock
Use Queryset._query instead of Cursor.__spec for count()
This commit is contained in:
		| @@ -7,6 +7,7 @@ Development | |||||||
| =========== | =========== | ||||||
| - (Fill this out as you fix issues and develop your features). | - (Fill this out as you fix issues and develop your features). | ||||||
| - Fix LazyReferenceField dereferencing in embedded documents #2426 | - Fix LazyReferenceField dereferencing in embedded documents #2426 | ||||||
|  | - Fix regarding the recent use of Cursor.__spec in .count() that was interfering with mongomock #2425 | ||||||
|  |  | ||||||
| Changes in 0.21.0 | Changes in 0.21.0 | ||||||
| ================= | ================= | ||||||
|   | |||||||
| @@ -420,7 +420,7 @@ class BaseQuerySet: | |||||||
|  |  | ||||||
|         count = count_documents( |         count = count_documents( | ||||||
|             collection=self._cursor.collection, |             collection=self._cursor.collection, | ||||||
|             filter=self._cursor._Cursor__spec, |             filter=self._query, | ||||||
|             **kwargs, |             **kwargs, | ||||||
|         ) |         ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -2900,50 +2900,32 @@ class TestDocumentInstance(MongoDBTestCase): | |||||||
|         # Checks |         # Checks | ||||||
|         assert ",".join([str(b) for b in Book.objects.all()]) == "1,2,3,4,5,6,7,8,9" |         assert ",".join([str(b) for b in Book.objects.all()]) == "1,2,3,4,5,6,7,8,9" | ||||||
|         # bob related books |         # bob related books | ||||||
|         assert ( |         bob_books_qs = Book.objects.filter( | ||||||
|             ",".join( |             Q(extra__a=bob) | Q(author=bob) | Q(extra__b=bob) | ||||||
|                 [ |  | ||||||
|                     str(b) |  | ||||||
|                     for b in Book.objects.filter( |  | ||||||
|                         Q(extra__a=bob) | Q(author=bob) | Q(extra__b=bob) |  | ||||||
|                     ) |  | ||||||
|                 ] |  | ||||||
|             ) |  | ||||||
|             == "1,2,3,4" |  | ||||||
|         ) |         ) | ||||||
|  |         assert [str(b) for b in bob_books_qs] == ["1", "2", "3", "4"] | ||||||
|  |         assert bob_books_qs.count() == 4 | ||||||
|  |  | ||||||
|         # Susan & Karl related books |         # Susan & Karl related books | ||||||
|         assert ( |         susan_karl_books_qs = Book.objects.filter( | ||||||
|             ",".join( |             Q(extra__a__all=[karl, susan]) | ||||||
|                 [ |             | Q(author__all=[karl, susan]) | ||||||
|                     str(b) |             | Q(extra__b__all=[karl.to_dbref(), susan.to_dbref()]) | ||||||
|                     for b in Book.objects.filter( |  | ||||||
|                         Q(extra__a__all=[karl, susan]) |  | ||||||
|                         | Q(author__all=[karl, susan]) |  | ||||||
|                         | Q(extra__b__all=[karl.to_dbref(), susan.to_dbref()]) |  | ||||||
|                     ) |  | ||||||
|                 ] |  | ||||||
|             ) |  | ||||||
|             == "1" |  | ||||||
|         ) |         ) | ||||||
|  |         assert [str(b) for b in susan_karl_books_qs] == ["1"] | ||||||
|  |         assert susan_karl_books_qs.count() == 1 | ||||||
|  |  | ||||||
|         # $Where |         # $Where | ||||||
|         assert ( |         custom_qs = Book.objects.filter( | ||||||
|             ",".join( |             __raw__={ | ||||||
|                 [ |                 "$where": """ | ||||||
|                     str(b) |  | ||||||
|                     for b in Book.objects.filter( |  | ||||||
|                         __raw__={ |  | ||||||
|                             "$where": """ |  | ||||||
|                                             function(){ |                                             function(){ | ||||||
|                                                 return this.name == '1' || |                                                 return this.name == '1' || | ||||||
|                                                        this.name == '2';}""" |                                                        this.name == '2';}""" | ||||||
|                         } |             } | ||||||
|                     ) |  | ||||||
|                 ] |  | ||||||
|             ) |  | ||||||
|             == "1,2" |  | ||||||
|         ) |         ) | ||||||
|  |         assert [str(b) for b in custom_qs] == ["1", "2"] | ||||||
|  |         assert custom_qs.count() == 2 | ||||||
|  |  | ||||||
|     def test_switch_db_instance(self): |     def test_switch_db_instance(self): | ||||||
|         register_connection("testdb-1", "mongoenginetest2") |         register_connection("testdb-1", "mongoenginetest2") | ||||||
|   | |||||||
| @@ -104,18 +104,17 @@ class TestTransform(unittest.TestCase): | |||||||
|         post = BlogPost(**data) |         post = BlogPost(**data) | ||||||
|         post.save() |         post.save() | ||||||
|  |  | ||||||
|         assert "postTitle" in BlogPost.objects(title=data["title"])._query |         qs = BlogPost.objects(title=data["title"]) | ||||||
|         assert not ("title" in BlogPost.objects(title=data["title"])._query) |         assert qs._query == {"postTitle": data["title"]} | ||||||
|         assert BlogPost.objects(title=data["title"]).count() == 1 |         assert qs.count() == 1 | ||||||
|  |  | ||||||
|         assert "_id" in BlogPost.objects(pk=post.id)._query |         qs = BlogPost.objects(pk=post.id) | ||||||
|         assert BlogPost.objects(pk=post.id).count() == 1 |         assert qs._query == {"_id": post.id} | ||||||
|  |         assert qs.count() == 1 | ||||||
|  |  | ||||||
|         assert ( |         qs = BlogPost.objects(comments__content="test") | ||||||
|             "postComments.commentContent" |         assert qs._query == {"postComments.commentContent": "test"} | ||||||
|             in BlogPost.objects(comments__content="test")._query |         assert qs.count() == 1 | ||||||
|         ) |  | ||||||
|         assert BlogPost.objects(comments__content="test").count() == 1 |  | ||||||
|  |  | ||||||
|         BlogPost.drop_collection() |         BlogPost.drop_collection() | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user