From c2622aee4db9125088787b0048abf492321ab190 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Wed, 7 Oct 2020 12:56:19 -0400 Subject: [PATCH] feat: add 'update_transforms' to '_helpers.pbs_for_set_no_merge' Toward #217. --- google/cloud/firestore_v1/_helpers.py | 10 ++++------ tests/unit/v1/test__helpers.py | 26 +++++++++----------------- 2 files changed, 13 insertions(+), 23 deletions(-) diff --git a/google/cloud/firestore_v1/_helpers.py b/google/cloud/firestore_v1/_helpers.py index a327a5fa7..d8e6df772 100644 --- a/google/cloud/firestore_v1/_helpers.py +++ b/google/cloud/firestore_v1/_helpers.py @@ -624,15 +624,13 @@ def pbs_for_set_no_merge(document_path, document_data) -> List[types.write.Write "specifying 'merge=True' or 'merge=[field_paths]'." ) - # Conformance tests require send the 'update_pb' even if the document - # contains only transforms. - write_pbs = [extractor.get_update_pb(document_path)] + set_pb = extractor.get_update_pb(document_path) if extractor.has_transforms: - transform_pb = extractor.get_transform_pb(document_path) - write_pbs.append(transform_pb) + field_transform_pbs = extractor.get_field_transform_pbs(document_path) + set_pb.update_transforms.extend(field_transform_pbs) - return write_pbs + return [set_pb] class DocumentExtractorForMerge(DocumentExtractor): diff --git a/tests/unit/v1/test__helpers.py b/tests/unit/v1/test__helpers.py index dc8462e7f..f6a4d8284 100644 --- a/tests/unit/v1/test__helpers.py +++ b/tests/unit/v1/test__helpers.py @@ -1631,23 +1631,17 @@ def _make_write_w_document(document_path, **data): ) @staticmethod - def _make_write_w_transform(document_path, fields): + def _add_field_transforms(update_pb, fields): from google.cloud.firestore_v1.types import write from google.cloud.firestore_v1 import DocumentTransform server_val = DocumentTransform.FieldTransform.ServerValue - transforms = [ - write.DocumentTransform.FieldTransform( - field_path=field, set_to_server_value=server_val.REQUEST_TIME - ) - for field in fields - ] - - return write.Write( - transform=write.DocumentTransform( - document=document_path, field_transforms=transforms + for field in fields: + update_pb.update_transforms.append( + DocumentTransform.FieldTransform( + field_path=field, set_to_server_value=server_val.REQUEST_TIME + ) ) - ) def test_w_empty_document(self): document_path = _make_ref_string(u"little", u"town", u"of", u"ham") @@ -1668,8 +1662,8 @@ def test_w_only_server_timestamp(self): write_pbs = self._call_fut(document_path, document_data) update_pb = self._make_write_w_document(document_path) - transform_pb = self._make_write_w_transform(document_path, ["butter"]) - expected_pbs = [update_pb, transform_pb] + self._add_field_transforms(update_pb, fields=["butter"]) + expected_pbs = [update_pb] self.assertEqual(write_pbs, expected_pbs) def _helper(self, do_transform=False, empty_val=False): @@ -1697,9 +1691,7 @@ def _helper(self, do_transform=False, empty_val=False): expected_pbs = [update_pb] if do_transform: - expected_pbs.append( - self._make_write_w_transform(document_path, fields=["butter"]) - ) + self._add_field_transforms(update_pb, fields=["butter"]) self.assertEqual(write_pbs, expected_pbs)