Skip to content

Commit 6791505

Browse files
Adding UnknownDocument and hasCommittedMutations (#1971)
1 parent aa4a13a commit 6791505

34 files changed

+1246
-858
lines changed

Firestore/Example/Tests/API/FIRQuerySnapshotTests.mm

+4-4
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,11 @@ - (void)testEquals {
7373
}
7474

7575
- (void)testIncludeMetadataChanges {
76-
FSTDocument *doc1Old = FSTTestDoc("foo/bar", 1, @{@"a" : @"b"}, YES);
77-
FSTDocument *doc1New = FSTTestDoc("foo/bar", 1, @{@"a" : @"b"}, NO);
76+
FSTDocument *doc1Old = FSTTestDoc("foo/bar", 1, @{@"a" : @"b"}, FSTDocumentStateLocalMutations);
77+
FSTDocument *doc1New = FSTTestDoc("foo/bar", 1, @{@"a" : @"b"}, FSTDocumentStateSynced);
7878

79-
FSTDocument *doc2Old = FSTTestDoc("foo/baz", 1, @{@"a" : @"b"}, NO);
80-
FSTDocument *doc2New = FSTTestDoc("foo/baz", 1, @{@"a" : @"c"}, NO);
79+
FSTDocument *doc2Old = FSTTestDoc("foo/baz", 1, @{@"a" : @"b"}, FSTDocumentStateSynced);
80+
FSTDocument *doc2New = FSTTestDoc("foo/baz", 1, @{@"a" : @"c"}, FSTDocumentStateSynced);
8181

8282
FSTDocumentSet *oldDocuments = FSTTestDocSet(FSTDocumentComparatorByKey, @[ doc1Old, doc2Old ]);
8383
FSTDocumentSet *newDocuments = FSTTestDocSet(FSTDocumentComparatorByKey, @[ doc2New, doc2New ]);

Firestore/Example/Tests/API/FSTAPIHelpers.mm

+11-5
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,10 @@
6363
NSDictionary<NSString *, id> *_Nullable data,
6464
BOOL hasMutations,
6565
BOOL fromCache) {
66-
FSTDocument *doc = data ? FSTTestDoc(path, version, data, hasMutations) : nil;
66+
FSTDocument *doc =
67+
data ? FSTTestDoc(path, version, data,
68+
hasMutations ? FSTDocumentStateLocalMutations : FSTDocumentStateSynced)
69+
: nil;
6770
return [FIRDocumentSnapshot snapshotWithFirestore:FSTTestFirestore()
6871
documentKey:testutil::Key(path)
6972
document:doc
@@ -91,15 +94,18 @@
9194
[FIRSnapshotMetadata snapshotMetadataWithPendingWrites:hasPendingWrites fromCache:fromCache];
9295
FSTDocumentSet *oldDocuments = FSTTestDocSet(FSTDocumentComparatorByKey, @[]);
9396
for (NSString *key in oldDocs) {
94-
oldDocuments =
95-
[oldDocuments documentSetByAddingDocument:FSTTestDoc(util::StringFormat("%s/%s", path, key),
96-
1, oldDocs[key], hasPendingWrites)];
97+
oldDocuments = [oldDocuments
98+
documentSetByAddingDocument:FSTTestDoc(util::StringFormat("%s/%s", path, key), 1,
99+
oldDocs[key],
100+
hasPendingWrites ? FSTDocumentStateLocalMutations
101+
: FSTDocumentStateSynced)];
97102
}
98103
FSTDocumentSet *newDocuments = oldDocuments;
99104
NSArray<FSTDocumentViewChange *> *documentChanges = [NSArray array];
100105
for (NSString *key in docsToAdd) {
101106
FSTDocument *docToAdd =
102-
FSTTestDoc(util::StringFormat("%s/%s", path, key), 1, docsToAdd[key], hasPendingWrites);
107+
FSTTestDoc(util::StringFormat("%s/%s", path, key), 1, docsToAdd[key],
108+
hasPendingWrites ? FSTDocumentStateLocalMutations : FSTDocumentStateSynced);
103109
newDocuments = [newDocuments documentSetByAddingDocument:docToAdd];
104110
documentChanges = [documentChanges
105111
arrayByAddingObject:[FSTDocumentViewChange

Firestore/Example/Tests/Core/FSTQueryListenerTests.mm

+33-25
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ - (void)testRaisesCollectionEvents {
5656
NSMutableArray<FSTViewSnapshot *> *otherAccum = [NSMutableArray array];
5757

5858
FSTQuery *query = FSTTestQuery("rooms");
59-
FSTDocument *doc1 = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, NO);
60-
FSTDocument *doc2 = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, NO);
61-
FSTDocument *doc2prime =
62-
FSTTestDoc("rooms/Hades", 3, @{@"name" : @"Hades", @"owner" : @"Jonny"}, NO);
59+
FSTDocument *doc1 = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, FSTDocumentStateSynced);
60+
FSTDocument *doc2 = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, FSTDocumentStateSynced);
61+
FSTDocument *doc2prime = FSTTestDoc("rooms/Hades", 3, @{@"name" : @"Hades", @"owner" : @"Jonny"},
62+
FSTDocumentStateSynced);
6363

6464
FSTQueryListener *listener = [self listenToQuery:query accumulatingSnapshots:accum];
6565
FSTQueryListener *otherListener = [self listenToQuery:query accumulatingSnapshots:otherAccum];
@@ -133,8 +133,8 @@ - (void)testMutingAsyncListenerPreventsAllSubsequentEvents {
133133
NSMutableArray<FSTViewSnapshot *> *accum = [NSMutableArray array];
134134

135135
FSTQuery *query = FSTTestQuery("rooms/Eros");
136-
FSTDocument *doc1 = FSTTestDoc("rooms/Eros", 3, @{@"name" : @"Eros"}, NO);
137-
FSTDocument *doc2 = FSTTestDoc("rooms/Eros", 4, @{@"name" : @"Eros2"}, NO);
136+
FSTDocument *doc1 = FSTTestDoc("rooms/Eros", 3, @{@"name" : @"Eros"}, FSTDocumentStateSynced);
137+
FSTDocument *doc2 = FSTTestDoc("rooms/Eros", 4, @{@"name" : @"Eros2"}, FSTDocumentStateSynced);
138138

139139
__block FSTAsyncQueryListener *listener =
140140
[[FSTAsyncQueryListener alloc] initWithExecutor:_executor.get()
@@ -171,8 +171,8 @@ - (void)testDoesNotRaiseEventsForMetadataChangesUnlessSpecified {
171171
NSMutableArray<FSTViewSnapshot *> *fullAccum = [NSMutableArray array];
172172

173173
FSTQuery *query = FSTTestQuery("rooms");
174-
FSTDocument *doc1 = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, NO);
175-
FSTDocument *doc2 = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, NO);
174+
FSTDocument *doc1 = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, FSTDocumentStateSynced);
175+
FSTDocument *doc2 = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, FSTDocumentStateSynced);
176176

177177
FSTListenOptions *options = [[FSTListenOptions alloc] initWithIncludeQueryMetadataChanges:YES
178178
includeDocumentMetadataChanges:NO
@@ -207,10 +207,12 @@ - (void)testRaisesDocumentMetadataEventsOnlyWhenSpecified {
207207
NSMutableArray<FSTViewSnapshot *> *fullAccum = [NSMutableArray array];
208208

209209
FSTQuery *query = FSTTestQuery("rooms");
210-
FSTDocument *doc1 = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, YES);
211-
FSTDocument *doc2 = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, NO);
212-
FSTDocument *doc1Prime = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, NO);
213-
FSTDocument *doc3 = FSTTestDoc("rooms/Other", 3, @{@"name" : @"Other"}, NO);
210+
FSTDocument *doc1 =
211+
FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, FSTDocumentStateLocalMutations);
212+
FSTDocument *doc2 = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, FSTDocumentStateSynced);
213+
FSTDocument *doc1Prime =
214+
FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, FSTDocumentStateSynced);
215+
FSTDocument *doc3 = FSTTestDoc("rooms/Other", 3, @{@"name" : @"Other"}, FSTDocumentStateSynced);
214216

215217
FSTListenOptions *options = [[FSTListenOptions alloc] initWithIncludeQueryMetadataChanges:NO
216218
includeDocumentMetadataChanges:YES
@@ -256,11 +258,15 @@ - (void)testRaisesQueryMetadataEventsOnlyWhenHasPendingWritesOnTheQueryChanges {
256258
NSMutableArray<FSTViewSnapshot *> *fullAccum = [NSMutableArray array];
257259

258260
FSTQuery *query = FSTTestQuery("rooms");
259-
FSTDocument *doc1 = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, YES);
260-
FSTDocument *doc2 = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, YES);
261-
FSTDocument *doc1Prime = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, NO);
262-
FSTDocument *doc2Prime = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, NO);
263-
FSTDocument *doc3 = FSTTestDoc("rooms/Other", 3, @{@"name" : @"Other"}, NO);
261+
FSTDocument *doc1 =
262+
FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, FSTDocumentStateLocalMutations);
263+
FSTDocument *doc2 =
264+
FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, FSTDocumentStateLocalMutations);
265+
FSTDocument *doc1Prime =
266+
FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, FSTDocumentStateSynced);
267+
FSTDocument *doc2Prime =
268+
FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, FSTDocumentStateSynced);
269+
FSTDocument *doc3 = FSTTestDoc("rooms/Other", 3, @{@"name" : @"Other"}, FSTDocumentStateSynced);
264270

265271
FSTListenOptions *options = [[FSTListenOptions alloc] initWithIncludeQueryMetadataChanges:YES
266272
includeDocumentMetadataChanges:NO
@@ -293,10 +299,12 @@ - (void)testMetadataOnlyDocumentChangesAreFilteredOutWhenIncludeDocumentMetadata
293299
NSMutableArray<FSTViewSnapshot *> *filteredAccum = [NSMutableArray array];
294300

295301
FSTQuery *query = FSTTestQuery("rooms");
296-
FSTDocument *doc1 = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, YES);
297-
FSTDocument *doc2 = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, NO);
298-
FSTDocument *doc1Prime = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, NO);
299-
FSTDocument *doc3 = FSTTestDoc("rooms/Other", 3, @{@"name" : @"Other"}, NO);
302+
FSTDocument *doc1 =
303+
FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, FSTDocumentStateLocalMutations);
304+
FSTDocument *doc2 = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, FSTDocumentStateSynced);
305+
FSTDocument *doc1Prime =
306+
FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, FSTDocumentStateSynced);
307+
FSTDocument *doc3 = FSTTestDoc("rooms/Other", 3, @{@"name" : @"Other"}, FSTDocumentStateSynced);
300308

301309
FSTQueryListener *filteredListener =
302310
[self listenToQuery:query accumulatingSnapshots:filteredAccum];
@@ -325,8 +333,8 @@ - (void)testWillWaitForSyncIfOnline {
325333
NSMutableArray<FSTViewSnapshot *> *events = [NSMutableArray array];
326334

327335
FSTQuery *query = FSTTestQuery("rooms");
328-
FSTDocument *doc1 = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, NO);
329-
FSTDocument *doc2 = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, NO);
336+
FSTDocument *doc1 = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, FSTDocumentStateSynced);
337+
FSTDocument *doc2 = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, FSTDocumentStateSynced);
330338
FSTQueryListener *listener =
331339
[self listenToQuery:query
332340
options:[[FSTListenOptions alloc] initWithIncludeQueryMetadataChanges:NO
@@ -366,8 +374,8 @@ - (void)testWillRaiseInitialEventWhenGoingOffline {
366374
NSMutableArray<FSTViewSnapshot *> *events = [NSMutableArray array];
367375

368376
FSTQuery *query = FSTTestQuery("rooms");
369-
FSTDocument *doc1 = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, NO);
370-
FSTDocument *doc2 = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, NO);
377+
FSTDocument *doc1 = FSTTestDoc("rooms/Eros", 1, @{@"name" : @"Eros"}, FSTDocumentStateSynced);
378+
FSTDocument *doc2 = FSTTestDoc("rooms/Hades", 2, @{@"name" : @"Hades"}, FSTDocumentStateSynced);
371379
FSTQueryListener *listener =
372380
[self listenToQuery:query
373381
options:[[FSTListenOptions alloc] initWithIncludeQueryMetadataChanges:NO

0 commit comments

Comments
 (0)