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..7caa3799f 100644 --- a/tests/unit/v1/test_base_query.py +++ b/tests/unit/v1/test_base_query.py @@ -726,6 +726,14 @@ 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): + 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))