From 039fe9e333a2cf99f31a303c8963c2b1dc00b093 Mon Sep 17 00:00:00 2001 From: Chris Wilcox Date: Wed, 1 Sep 2021 14:50:34 -0700 Subject: [PATCH 1/4] fix: treat None cursors as a no-op. --- google/cloud/firestore_v1/base_query.py | 2 +- tests/unit/v1/test_base_query.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/google/cloud/firestore_v1/base_query.py b/google/cloud/firestore_v1/base_query.py index 4f3ee101f..8502fdfb2 100644 --- a/google/cloud/firestore_v1/base_query.py +++ b/google/cloud/firestore_v1/base_query.py @@ -755,7 +755,7 @@ def _normalize_cursor(self, cursor, orders) -> Optional[Tuple[Any, Any]]: document_fields = values - if len(document_fields) > len(orders): + if document_fields and len(document_fields) > len(orders): msg = _MISMATCH_CURSOR_W_ORDER_BY.format(document_fields, order_keys) raise ValueError(msg) diff --git a/tests/unit/v1/test_base_query.py b/tests/unit/v1/test_base_query.py index 3fb9a687f..f02af79f4 100644 --- a/tests/unit/v1/test_base_query.py +++ b/tests/unit/v1/test_base_query.py @@ -726,6 +726,18 @@ def test__normalize_orders_wo_orders_w_snapshot_cursor_w_neq_where(self): ] self.assertEqual(query._normalize_orders(), expected) + def test__normalize_orders_w_name_orders_w_none_cursor(self): + values = {"a": 7, "b": "foo"} + docref = self._make_docref("here", "doc_id") + collection = self._make_collection("here") + query = ( + self._make_one(collection) + .order_by("__name__", "DESCENDING") + .start_at(None) + ) + expected = [query._make_order("__name__", "DESCENDING")] + self.assertEqual(query._normalize_orders(), expected) + def test__normalize_cursor_none(self): query = self._make_one(mock.sentinel.parent) self.assertIsNone(query._normalize_cursor(None, query._orders)) From 321c8b3e8c5bf8906ecb72120b0556971d345768 Mon Sep 17 00:00:00 2001 From: Chris Wilcox Date: Wed, 1 Sep 2021 15:25:17 -0700 Subject: [PATCH 2/4] chore: lint --- tests/unit/v1/test_base_query.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/unit/v1/test_base_query.py b/tests/unit/v1/test_base_query.py index f02af79f4..ba58fdda9 100644 --- a/tests/unit/v1/test_base_query.py +++ b/tests/unit/v1/test_base_query.py @@ -731,9 +731,7 @@ def test__normalize_orders_w_name_orders_w_none_cursor(self): docref = self._make_docref("here", "doc_id") collection = self._make_collection("here") query = ( - self._make_one(collection) - .order_by("__name__", "DESCENDING") - .start_at(None) + self._make_one(collection).order_by("__name__", "DESCENDING").start_at(None) ) expected = [query._make_order("__name__", "DESCENDING")] self.assertEqual(query._normalize_orders(), expected) @@ -1166,7 +1164,8 @@ def test_comparator_missing_order_by_field_in_data_raises(self): def test_multiple_recursive_calls(self): query = self._make_one(_make_client().collection("asdf")) self.assertIsInstance( - query.recursive().recursive(), type(query), + query.recursive().recursive(), + type(query), ) From 4285614c1c156c3702c08aee7ecc54b93c37d4f7 Mon Sep 17 00:00:00 2001 From: Chris Wilcox Date: Wed, 1 Sep 2021 15:33:39 -0700 Subject: [PATCH 3/4] chore: lint --- tests/unit/v1/test_base_query.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/unit/v1/test_base_query.py b/tests/unit/v1/test_base_query.py index ba58fdda9..9ae78e721 100644 --- a/tests/unit/v1/test_base_query.py +++ b/tests/unit/v1/test_base_query.py @@ -1164,8 +1164,7 @@ def test_comparator_missing_order_by_field_in_data_raises(self): def test_multiple_recursive_calls(self): query = self._make_one(_make_client().collection("asdf")) self.assertIsInstance( - query.recursive().recursive(), - type(query), + query.recursive().recursive(), type(query), ) From 00a220f8469c90d0d51c2ad80feb80a593c97501 Mon Sep 17 00:00:00 2001 From: Chris Wilcox Date: Wed, 1 Sep 2021 15:45:08 -0700 Subject: [PATCH 4/4] chore: format --- tests/unit/v1/test_base_query.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/unit/v1/test_base_query.py b/tests/unit/v1/test_base_query.py index 9ae78e721..7caa3799f 100644 --- a/tests/unit/v1/test_base_query.py +++ b/tests/unit/v1/test_base_query.py @@ -727,8 +727,6 @@ def test__normalize_orders_wo_orders_w_snapshot_cursor_w_neq_where(self): self.assertEqual(query._normalize_orders(), expected) def test__normalize_orders_w_name_orders_w_none_cursor(self): - values = {"a": 7, "b": "foo"} - docref = self._make_docref("here", "doc_id") collection = self._make_collection("here") query = ( self._make_one(collection).order_by("__name__", "DESCENDING").start_at(None)