Skip to content

Commit fa399de

Browse files
committed
Merge remote-tracking branch 'origin/master' into SpecTestPortJsSdkPr7229_PR4929
2 parents c8562d4 + 1b43eb2 commit fa399de

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

firebase-firestore/src/main/java/com/google/firebase/firestore/AggregateQuerySnapshot.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import androidx.annotation.Nullable;
2121
import androidx.annotation.RestrictTo;
2222
import com.google.firestore.v1.Value;
23+
import java.util.Collections;
2324
import java.util.Map;
2425
import java.util.Objects;
2526
import javax.annotation.Nonnull;
@@ -43,6 +44,16 @@ public class AggregateQuerySnapshot {
4344
this.data = data;
4445
}
4546

47+
// Convenience function to create an AggregateQuerySnapshot instance whose only aggregation is a
48+
// "count" with the given value. This method only exists for use by the CPP SDK; when the CPP SDK
49+
// implements generic aggregations and migrates away from this method then it can be removed.
50+
static AggregateQuerySnapshot createWithCount(@NonNull AggregateQuery query, long count) {
51+
return new AggregateQuerySnapshot(
52+
query,
53+
Collections.singletonMap(
54+
AggregateField.count().getAlias(), Value.newBuilder().setIntegerValue(count).build()));
55+
}
56+
4657
/** Returns the query that was executed to produce this result. */
4758
@NonNull
4859
public AggregateQuery getQuery() {
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Copyright 2022 Google LLC
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
package com.google.firebase.firestore;
16+
17+
import static com.google.common.truth.Truth.assertThat;
18+
import static com.google.firebase.firestore.TestUtil.collectionReference;
19+
20+
import org.junit.Test;
21+
import org.junit.runner.RunWith;
22+
import org.robolectric.RobolectricTestRunner;
23+
import org.robolectric.annotation.Config;
24+
25+
@RunWith(RobolectricTestRunner.class)
26+
@Config(manifest = Config.NONE)
27+
public class AggregateQuerySnapshotTest {
28+
29+
@Test
30+
public void createWithCountShouldReturnInstanceWithTheGivenQueryAndCount() {
31+
AggregateQuery query = collectionReference("foo/bar/baz").count();
32+
AggregateQuerySnapshot snapshot = AggregateQuerySnapshot.createWithCount(query, 42);
33+
assertThat(snapshot.getQuery()).isSameInstanceAs(query);
34+
assertThat(snapshot.getCount()).isEqualTo(42);
35+
}
36+
}

0 commit comments

Comments
 (0)