diff options
Diffstat (limited to 'Firestore/Example/Tests/Util/FSTEventAccumulator.mm')
-rw-r--r-- | Firestore/Example/Tests/Util/FSTEventAccumulator.mm | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Firestore/Example/Tests/Util/FSTEventAccumulator.mm b/Firestore/Example/Tests/Util/FSTEventAccumulator.mm index 623ba2d..3ab6035 100644 --- a/Firestore/Example/Tests/Util/FSTEventAccumulator.mm +++ b/Firestore/Example/Tests/Util/FSTEventAccumulator.mm @@ -18,6 +18,9 @@ #import <XCTest/XCTest.h> +#import "Firestore/Source/Public/FIRDocumentSnapshot.h" +#import "Firestore/Source/Public/FIRQuerySnapshot.h" +#import "Firestore/Source/Public/FIRSnapshotMetadata.h" #import "Firestore/Source/Util/FSTAssert.h" #import "Firestore/Example/Tests/Util/XCTestCase+Await.h" @@ -68,6 +71,31 @@ NS_ASSUME_NONNULL_BEGIN return events[0]; } +- (id)awaitLocalEvent { + id event; + do { + event = [self awaitEventWithName:@"Local Event"]; + } while (![self hasPendingWrites:event]); + return event; +} + +- (id)awaitRemoteEvent { + id event; + do { + event = [self awaitEventWithName:@"Remote Event"]; + } while ([self hasPendingWrites:event]); + return event; +} + +- (BOOL)hasPendingWrites:(id)event { + if ([event isKindOfClass:[FIRDocumentSnapshot class]]) { + return ((FIRDocumentSnapshot *)event).metadata.hasPendingWrites; + } else { + FSTAssert([event isKindOfClass:[FIRQuerySnapshot class]], @"Unexpected event: %@", event); + return ((FIRQuerySnapshot *)event).metadata.hasPendingWrites; + } +} + - (void (^)(id _Nullable, NSError *_Nullable))valueEventHandler { return ^void(id _Nullable value, NSError *_Nullable error) { // We can't store nil in the _events array, but these are still interesting to tests so store |