Skip to content

Commit 39318da

Browse files
committed
Increase tests coverage
1 parent 8c8ae8c commit 39318da

File tree

2 files changed

+67
-0
lines changed

2 files changed

+67
-0
lines changed

firebase-firestore/src/androidTest/java/com/google/firebase/firestore/IndexingTest.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,12 @@
1414

1515
package com.google.firebase.firestore;
1616

17+
import static com.google.firebase.firestore.testutil.IntegrationTestUtil.testCollectionWithDocs;
1718
import static com.google.firebase.firestore.testutil.IntegrationTestUtil.testFirestore;
19+
import static com.google.firebase.firestore.testutil.IntegrationTestUtil.waitFor;
1820
import static com.google.firebase.firestore.testutil.TestUtil.assertDoesNotThrow;
21+
import static com.google.firebase.firestore.testutil.TestUtil.map;
22+
import static org.junit.Assert.assertEquals;
1923

2024
import androidx.test.ext.junit.runners.AndroidJUnit4;
2125
import com.google.android.gms.tasks.Task;
@@ -112,15 +116,49 @@ public void testAutomaticIndexingSetSuccessfully() {
112116
.setLocalCacheSettings(PersistentCacheSettings.newBuilder().build())
113117
.build();
114118
db.setFirestoreSettings(settings);
119+
120+
CollectionReference collection =
121+
testCollectionWithDocs(
122+
map(
123+
"a", map("match", true),
124+
"b", map("match", false),
125+
"c", map("match", false)));
126+
QuerySnapshot results = waitFor(collection.whereEqualTo("match", true).get());
127+
assertEquals(1, results.size());
128+
115129
assertDoesNotThrow(() -> db.getPersistentCacheIndexManager().enableIndexAutoCreation());
130+
131+
results = waitFor(collection.whereEqualTo("match", true).get());
132+
assertEquals(1, results.size());
133+
116134
assertDoesNotThrow(() -> db.getPersistentCacheIndexManager().disableIndexAutoCreation());
135+
136+
results = waitFor(collection.whereEqualTo("match", true).get());
137+
assertEquals(1, results.size());
117138
}
118139

119140
@Test
120141
public void testAutomaticIndexingSetSuccessfullyUseDefault() {
121142
// Use persistent disk cache (default)
122143
FirebaseFirestore db = testFirestore();
144+
145+
CollectionReference collection =
146+
testCollectionWithDocs(
147+
map(
148+
"a", map("match", true),
149+
"b", map("match", false),
150+
"c", map("match", false)));
151+
QuerySnapshot results = waitFor(collection.whereEqualTo("match", true).get());
152+
assertEquals(1, results.size());
153+
123154
assertDoesNotThrow(() -> db.getPersistentCacheIndexManager().enableIndexAutoCreation());
155+
156+
results = waitFor(collection.whereEqualTo("match", true).get());
157+
assertEquals(1, results.size());
158+
124159
assertDoesNotThrow(() -> db.getPersistentCacheIndexManager().disableIndexAutoCreation());
160+
161+
results = waitFor(collection.whereEqualTo("match", true).get());
162+
assertEquals(1, results.size());
125163
}
126164
}

firebase-firestore/src/test/java/com/google/firebase/firestore/local/SQLiteLocalStoreTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -502,4 +502,33 @@ public void testDisableIndexAutoCreationWorks() {
502502
executeQuery(query2);
503503
assertRemoteDocumentsRead(/* byKey= */ 0, /* byCollection= */ 2);
504504
}
505+
506+
@Test
507+
public void testIndexAutoCreationWorksWithMutation() {
508+
Query query = query("coll").filter(filter("matches", "==", true));
509+
int targetId = allocateQuery(query);
510+
511+
enableIndexAutoCreation();
512+
513+
applyRemoteEvent(addedRemoteEvent(doc("coll/a", 10, map("matches", true)), targetId));
514+
applyRemoteEvent(addedRemoteEvent(doc("coll/b", 10, map("matches", false)), targetId));
515+
applyRemoteEvent(addedRemoteEvent(doc("coll/c", 10, map("matches", false)), targetId));
516+
applyRemoteEvent(addedRemoteEvent(doc("coll/d", 10, map("matches", false)), targetId));
517+
applyRemoteEvent(addedRemoteEvent(doc("coll/e", 10, map("matches", true)), targetId));
518+
519+
executeQuery(query);
520+
assertRemoteDocumentsRead(/* byKey= */ 0, /* byCollection= */ 2);
521+
assertQueryReturned("coll/a", "coll/e");
522+
523+
writeMutation(deleteMutation("coll/e"));
524+
525+
backfillIndexes();
526+
527+
writeMutation(setMutation("coll/f", map("matches", true)));
528+
529+
executeQuery(query);
530+
assertRemoteDocumentsRead(/* byKey= */ 1, /* byCollection= */ 0);
531+
assertOverlaysRead(/* byKey= */ 1, /* byCollection= */ 1);
532+
assertQueryReturned("coll/a", "coll/f");
533+
}
505534
}

0 commit comments

Comments
 (0)