diff --git a/firestore/google/cloud/firestore_v1/watch.py b/firestore/google/cloud/firestore_v1/watch.py index 2dd80b69eb67..458a3a94780f 100644 --- a/firestore/google/cloud/firestore_v1/watch.py +++ b/firestore/google/cloud/firestore_v1/watch.py @@ -667,7 +667,7 @@ def modify_doc(new_document, updated_tree, updated_map): key = functools.cmp_to_key(self._comparator) # Deletes are sorted based on the order of the existing document. - delete_changes = sorted(delete_changes, key=key) + delete_changes = sorted(delete_changes) for name in delete_changes: change, updated_tree, updated_map = delete_doc( name, updated_tree, updated_map diff --git a/firestore/tests/unit/v1/test_watch.py b/firestore/tests/unit/v1/test_watch.py index c4037d4a6ab4..afd88b813081 100644 --- a/firestore/tests/unit/v1/test_watch.py +++ b/firestore/tests/unit/v1/test_watch.py @@ -736,6 +736,28 @@ class DummyDoc(object): ) self.assertEqual(updated_map, doc_map) # no change + def test__compute_snapshot_deletes_w_real_comparator(self): + from google.cloud.firestore_v1.watch import WatchDocTree + + doc_tree = WatchDocTree() + + class DummyDoc(object): + update_time = mock.sentinel + + deleted_doc_1 = DummyDoc() + deleted_doc_2 = DummyDoc() + doc_tree = doc_tree.insert(deleted_doc_1, None) + doc_tree = doc_tree.insert(deleted_doc_2, None) + doc_map = {"/deleted_1": deleted_doc_1, "/deleted_2": deleted_doc_2} + delete_changes = ["/deleted_1", "/deleted_2"] + add_changes = [] + update_changes = [] + inst = self._makeOne(comparator=object()) + updated_tree, updated_map, applied_changes = inst._compute_snapshot( + doc_tree, doc_map, delete_changes, add_changes, update_changes + ) + self.assertEqual(updated_map, {}) + def test__reset_docs(self): from google.cloud.firestore_v1.watch import ChangeType