PYTHON-3757 Bulk write operations don't consider hint field in equality checks (#1402)

This commit is contained in:
Noah Stapp 2023-10-20 14:08:43 -07:00 committed by GitHub
parent b9bb6f847b
commit 19c5fcfb74
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 42 additions and 4 deletions

View File

@ -126,11 +126,15 @@ class DeleteOne:
)
def __repr__(self) -> str:
return f"DeleteOne({self._filter!r}, {self._collation!r})"
return f"DeleteOne({self._filter!r}, {self._collation!r}, {self._hint!r})"
def __eq__(self, other: Any) -> bool:
if type(other) == type(self):
return (other._filter, other._collation) == (self._filter, self._collation)
return (other._filter, other._collation, other._hint) == (
self._filter,
self._collation,
self._hint,
)
return NotImplemented
def __ne__(self, other: Any) -> bool:
@ -187,11 +191,15 @@ class DeleteMany:
)
def __repr__(self) -> str:
return f"DeleteMany({self._filter!r}, {self._collation!r})"
return f"DeleteMany({self._filter!r}, {self._collation!r}, {self._hint!r})"
def __eq__(self, other: Any) -> bool:
if type(other) == type(self):
return (other._filter, other._collation) == (self._filter, self._collation)
return (other._filter, other._collation, other._hint) == (
self._filter,
self._collation,
self._hint,
)
return NotImplemented
def __ne__(self, other: Any) -> bool:

View File

@ -185,15 +185,45 @@ class TestWriteOpsComparison(unittest.TestCase):
def test_DeleteOneEquals(self):
self.assertEqual(DeleteOne({"foo": 42}), DeleteOne({"foo": 42}))
self.assertEqual(
DeleteOne({"foo": 42}, {"locale": "en_US"}), DeleteOne({"foo": 42}, {"locale": "en_US"})
)
self.assertEqual(
DeleteOne({"foo": 42}, {"locale": "en_US"}, {"hint": 1}),
DeleteOne({"foo": 42}, {"locale": "en_US"}, {"hint": 1}),
)
def test_DeleteOneNotEquals(self):
self.assertNotEqual(DeleteOne({"foo": 42}), DeleteOne({"foo": 23}))
self.assertNotEqual(
DeleteOne({"foo": 42}, {"locale": "en_US"}), DeleteOne({"foo": 42}, {"locale": "en_GB"})
)
self.assertNotEqual(
DeleteOne({"foo": 42}, {"locale": "en_US"}, {"hint": 1}),
DeleteOne({"foo": 42}, {"locale": "en_US"}, {"hint": 2}),
)
def test_DeleteManyEquals(self):
self.assertEqual(DeleteMany({"foo": 42}), DeleteMany({"foo": 42}))
self.assertEqual(
DeleteMany({"foo": 42}, {"locale": "en_US"}),
DeleteMany({"foo": 42}, {"locale": "en_US"}),
)
self.assertEqual(
DeleteMany({"foo": 42}, {"locale": "en_US"}, {"hint": 1}),
DeleteMany({"foo": 42}, {"locale": "en_US"}, {"hint": 1}),
)
def test_DeleteManyNotEquals(self):
self.assertNotEqual(DeleteMany({"foo": 42}), DeleteMany({"foo": 23}))
self.assertNotEqual(
DeleteMany({"foo": 42}, {"locale": "en_US"}),
DeleteMany({"foo": 42}, {"locale": "en_GB"}),
)
self.assertNotEqual(
DeleteMany({"foo": 42}, {"locale": "en_US"}, {"hint": 1}),
DeleteMany({"foo": 42}, {"locale": "en_US"}, {"hint": 2}),
)
def test_DeleteOneNotEqualsDeleteMany(self):
self.assertNotEqual(DeleteOne({"foo": 42}), DeleteMany({"foo": 42}))