Skip to content
This repository was archived by the owner on Mar 2, 2026. It is now read-only.

Commit 6432987

Browse files
committed
updated collection classes
1 parent 002950d commit 6432987

File tree

4 files changed

+12
-20
lines changed

4 files changed

+12
-20
lines changed

google/cloud/firestore_v1/base_collection.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
from google.cloud.firestore_v1.async_document import AsyncDocumentReference
4949
from google.cloud.firestore_v1.document import DocumentReference
5050
from google.cloud.firestore_v1.field_path import FieldPath
51+
from google.cloud.firestore_v1.pipeline_source import PipelineSource
5152
from google.cloud.firestore_v1.query_profile import ExplainOptions
5253
from google.cloud.firestore_v1.query_results import QueryResultsList
5354
from google.cloud.firestore_v1.stream_generator import StreamGenerator
@@ -602,18 +603,20 @@ def find_nearest(
602603
distance_threshold=distance_threshold,
603604
)
604605

605-
def pipeline(self):
606+
def _build_pipeline(self, source: "PipelineSource"):
606607
"""
607608
Convert this query into a Pipeline
608609
609610
Queries containing a `cursor` or `limit_to_last` are not currently supported
610611
612+
Args:
613+
source: the PipelineSource to build the pipeline off o
611614
Raises:
612615
- NotImplementedError: raised if the query contains a `cursor` or `limit_to_last`
613616
Returns:
614617
a Pipeline representing the query
615618
"""
616-
return self._query().pipeline()
619+
return self._query()._build_pipeline(source)
617620

618621

619622
def _auto_id() -> str:

tests/unit/v1/test_async_collection.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -609,15 +609,9 @@ def test_asynccollectionreference_pipeline():
609609

610610
client = make_async_client()
611611
collection = _make_async_collection_reference("collection", client=client)
612-
pipeline = collection.pipeline()
612+
pipeline = collection._build_pipeline(client.pipeline())
613613
assert isinstance(pipeline, AsyncPipeline)
614614
# should have single "Collection" stage
615615
assert len(pipeline.stages) == 1
616616
assert isinstance(pipeline.stages[0], Collection)
617-
assert pipeline.stages[0].path == "/collection"
618-
619-
620-
def test_asynccollectionreference_pipeline_no_client():
621-
collection = _make_async_collection_reference("collection")
622-
with pytest.raises(ValueError, match="client"):
623-
collection.pipeline()
617+
assert pipeline.stages[0].path == "/collection"

tests/unit/v1/test_base_collection.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -430,10 +430,11 @@ def test_basecollectionreference_pipeline(mock_query):
430430
_query.return_value = mock_query
431431

432432
collection = _make_base_collection_reference("collection")
433-
pipeline = collection.pipeline()
433+
mock_source = mock.Mock()
434+
pipeline = collection._build_pipeline(mock_source)
434435

435-
mock_query.pipeline.assert_called_once_with()
436-
assert pipeline == mock_query.pipeline.return_value
436+
mock_query._build_pipeline.assert_called_once_with(mock_source)
437+
assert pipeline == mock_query._build_pipeline.return_value
437438

438439

439440
@mock.patch("random.choice")

tests/unit/v1/test_collection.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -518,20 +518,14 @@ def test_collectionreference_pipeline():
518518

519519
client = _test_helpers.make_client()
520520
collection = _make_collection_reference("collection", client=client)
521-
pipeline = collection.pipeline()
521+
pipeline = collection._build_pipeline(client.pipeline())
522522
assert isinstance(pipeline, Pipeline)
523523
# should have single "Collection" stage
524524
assert len(pipeline.stages) == 1
525525
assert isinstance(pipeline.stages[0], Collection)
526526
assert pipeline.stages[0].path == "/collection"
527527

528528

529-
def test_collectionreference_pipeline_no_client():
530-
collection = _make_collection_reference("collection")
531-
with pytest.raises(ValueError, match="client"):
532-
collection.pipeline()
533-
534-
535529
@mock.patch("google.cloud.firestore_v1.collection.Watch", autospec=True)
536530
def test_on_snapshot(watch):
537531
collection = _make_collection_reference("collection")

0 commit comments

Comments
 (0)