@@ -152,6 +152,25 @@ TEST_P(DocumentOverlayCacheTest, CanReadSavedOverlays) {
152
152
});
153
153
}
154
154
155
+ TEST_P (DocumentOverlayCacheTest, GetOverlayExactlyMatchesTheGivenDocumentKey) {
156
+ this ->persistence_ ->Run (" Test" , [&] {
157
+ this ->SaveOverlaysWithSetMutations (1 , {" coll/doc1/sub/doc2" });
158
+
159
+ EXPECT_FALSE (
160
+ this ->cache_ ->GetOverlay (DocumentKey::FromPathString (" coll/d" )));
161
+ EXPECT_FALSE (
162
+ this ->cache_ ->GetOverlay (DocumentKey::FromPathString (" coll/doc1" )));
163
+ EXPECT_FALSE (
164
+ this ->cache_ ->GetOverlay (DocumentKey::FromPathString (" coll/doc1ZZ" )));
165
+
166
+ const DocumentKey document_key =
167
+ DocumentKey::FromPathString (" coll/doc1/sub/doc2" );
168
+ auto overlay_opt = this ->cache_ ->GetOverlay (document_key);
169
+ ASSERT_TRUE (overlay_opt);
170
+ EXPECT_EQ (overlay_opt->key (), document_key);
171
+ });
172
+ }
173
+
155
174
TEST_P (DocumentOverlayCacheTest, SavingOverlayOverwrites) {
156
175
this ->persistence_ ->Run (" Test" , [&] {
157
176
Mutation m1 = PatchMutation (" coll/doc1" , Map (" foo" , " bar" ));
@@ -288,6 +307,34 @@ TEST_P(DocumentOverlayCacheTest, UpdateDocumentOverlay) {
288
307
});
289
308
}
290
309
310
+ TEST_P (DocumentOverlayCacheTest, SaveDoesntAffectSubCollections) {
311
+ this ->persistence_ ->Run (" Test" , [&] {
312
+ Mutation mutation1 =
313
+ PatchMutation (" coll/doc/subcoll/subdoc" , Map (" foo" , " bar1" ));
314
+ Mutation mutation2 = PatchMutation (" coll/doc" , Map (" foo" , " bar2" ));
315
+ this ->SaveOverlaysWithMutations (1 , {mutation1});
316
+ this ->SaveOverlaysWithMutations (2 , {mutation2});
317
+
318
+ // Verify that `GetOverlay()` returns the correct mutations.
319
+ {
320
+ auto overlay_opt = this ->cache_ ->GetOverlay (
321
+ DocumentKey::FromPathString (" coll/doc/subcoll/subdoc" ));
322
+ EXPECT_TRUE (overlay_opt);
323
+ if (overlay_opt) {
324
+ EXPECT_EQ (overlay_opt.value ().mutation (), mutation1);
325
+ }
326
+ }
327
+ {
328
+ auto overlay_opt =
329
+ this ->cache_ ->GetOverlay (DocumentKey::FromPathString (" coll/doc" ));
330
+ EXPECT_TRUE (overlay_opt);
331
+ if (overlay_opt) {
332
+ EXPECT_EQ (overlay_opt.value ().mutation (), mutation2);
333
+ }
334
+ }
335
+ });
336
+ }
337
+
291
338
} // namespace
292
339
} // namespace local
293
340
} // namespace firestore
0 commit comments