Skip to content

Commit 7e0049f

Browse files
committed
Improve the integration test coverage for online vs offline comparisons.
Ports firebase/firebase-android-sdk#6841 to iOS.
1 parent 6cb554b commit 7e0049f

File tree

6 files changed

+180
-136
lines changed

6 files changed

+180
-136
lines changed

Firestore/Example/Tests/Integration/API/FIRCompositeIndexQueryTests.mm

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,12 @@ - (NSString *)toHashedId:(NSString *)docId {
122122
// Asserts that the result of running the query while online (against the backend/emulator) is
123123
// the same as running it while offline. The expected document Ids are hashed to match the
124124
// actual document IDs created by the test helper.
125-
- (void)assertOnlineAndOfflineResultsMatch:(FIRQuery *)query
125+
- (void)assertOnlineAndOfflineResultsMatch:(FIRCollectionReference *)collection
126+
withQuery:(FIRQuery *)query
126127
expectedDocs:(NSArray<NSString *> *)expectedDocs {
127-
[self checkOnlineAndOfflineQuery:query matchesResult:[self toHashedIds:expectedDocs]];
128+
[self checkOnlineAndOfflineCollection:collection
129+
query:query
130+
matchesResult:[self toHashedIds:expectedDocs]];
128131
}
129132

130133
// Asserts that the IDs in the query snapshot matches the expected Ids. The expected document
@@ -219,7 +222,8 @@ - (void)testOrQueriesWithCompositeIndexes {
219222
[FIRFilter filterWhereField:@"a" isGreaterThan:@2], [FIRFilter filterWhereField:@"b"
220223
isEqualTo:@1]
221224
]]];
222-
[self assertOnlineAndOfflineResultsMatch:[self compositeIndexQuery:query1]
225+
[self assertOnlineAndOfflineResultsMatch:collRef
226+
withQuery:[self compositeIndexQuery:query1]
223227
expectedDocs:@[ @"doc5", @"doc2", @"doc3" ]];
224228

225229
// Test with limits (implicit order by ASC): (a==1) || (b > 0) LIMIT 2
@@ -228,7 +232,8 @@ - (void)testOrQueriesWithCompositeIndexes {
228232
[FIRFilter filterWhereField:@"a" isEqualTo:@1], [FIRFilter filterWhereField:@"b"
229233
isGreaterThan:@0]
230234
]]];
231-
[self assertOnlineAndOfflineResultsMatch:[[self compositeIndexQuery:query2] queryLimitedTo:2]
235+
[self assertOnlineAndOfflineResultsMatch:collRef
236+
withQuery:[[self compositeIndexQuery:query2] queryLimitedTo:2]
232237
expectedDocs:@[ @"doc1", @"doc2" ]];
233238

234239
// Test with limits (explicit order by): (a==1) || (b > 0) LIMIT_TO_LAST 2
@@ -238,7 +243,8 @@ - (void)testOrQueriesWithCompositeIndexes {
238243
[FIRFilter filterWhereField:@"a" isEqualTo:@1], [FIRFilter filterWhereField:@"b"
239244
isGreaterThan:@0]
240245
]]];
241-
[self assertOnlineAndOfflineResultsMatch:[[[self compositeIndexQuery:query3] queryLimitedToLast:2]
246+
[self assertOnlineAndOfflineResultsMatch:collRef
247+
withQuery:[[[self compositeIndexQuery:query3] queryLimitedToLast:2]
242248
queryOrderedByField:@"b"]
243249
expectedDocs:@[ @"doc3", @"doc4" ]];
244250

@@ -248,7 +254,8 @@ - (void)testOrQueriesWithCompositeIndexes {
248254
[FIRFilter filterWhereField:@"a" isEqualTo:@2], [FIRFilter filterWhereField:@"b"
249255
isEqualTo:@1]
250256
]]];
251-
[self assertOnlineAndOfflineResultsMatch:[[[self compositeIndexQuery:query4] queryLimitedTo:1]
257+
[self assertOnlineAndOfflineResultsMatch:collRef
258+
withQuery:[[[self compositeIndexQuery:query4] queryLimitedTo:1]
252259
queryOrderedByField:@"a"]
253260
expectedDocs:@[ @"doc5" ]];
254261

@@ -258,7 +265,8 @@ - (void)testOrQueriesWithCompositeIndexes {
258265
[FIRFilter filterWhereField:@"a" isEqualTo:@2], [FIRFilter filterWhereField:@"b"
259266
isEqualTo:@1]
260267
]]];
261-
[self assertOnlineAndOfflineResultsMatch:[[[self compositeIndexQuery:query5] queryLimitedToLast:1]
268+
[self assertOnlineAndOfflineResultsMatch:collRef
269+
withQuery:[[[self compositeIndexQuery:query5] queryLimitedToLast:1]
262270
queryOrderedByField:@"a"]
263271
expectedDocs:@[ @"doc2" ]];
264272
}
@@ -886,7 +894,8 @@ - (void)testMultipleInequalityFromCacheAndFromServer {
886894
// implicit AND: a != 1 && b < 2
887895
FIRQuery *query = [[collRef queryWhereField:@"a" isNotEqualTo:@1] queryWhereField:@"b"
888896
isLessThan:@2];
889-
[self assertOnlineAndOfflineResultsMatch:[self compositeIndexQuery:query]
897+
[self assertOnlineAndOfflineResultsMatch:collRef
898+
withQuery:[self compositeIndexQuery:query]
890899
expectedDocs:@[ @"doc2" ]];
891900

892901
// explicit AND: a != 1 && b < 2
@@ -895,7 +904,8 @@ - (void)testMultipleInequalityFromCacheAndFromServer {
895904
[FIRFilter filterWhereField:@"a" isNotEqualTo:@1], [FIRFilter filterWhereField:@"b"
896905
isLessThan:@2]
897906
]]];
898-
[self assertOnlineAndOfflineResultsMatch:[self compositeIndexQuery:query]
907+
[self assertOnlineAndOfflineResultsMatch:collRef
908+
withQuery:[self compositeIndexQuery:query]
899909
expectedDocs:@[ @"doc2" ]];
900910

901911
// explicit AND: a < 3 && b not-in [2, 3]
@@ -905,14 +915,16 @@ - (void)testMultipleInequalityFromCacheAndFromServer {
905915
[FIRFilter filterWhereField:@"a" isLessThan:@3], [FIRFilter filterWhereField:@"b"
906916
notIn:@[ @2, @3 ]]
907917
]]];
908-
[self assertOnlineAndOfflineResultsMatch:[self compositeIndexQuery:query]
918+
[self assertOnlineAndOfflineResultsMatch:collRef
919+
withQuery:[self compositeIndexQuery:query]
909920
expectedDocs:@[ @"doc1", @"doc5", @"doc2" ]];
910921

911922
// a <3 && b != 0, ordered by: b desc, a desc, __name__ desc
912923
query = [[[[collRef queryWhereField:@"a" isLessThan:@3] queryWhereField:@"b" isNotEqualTo:@0]
913924
queryOrderedByField:@"b"
914925
descending:YES] queryLimitedTo:2];
915-
[self assertOnlineAndOfflineResultsMatch:[self compositeIndexQuery:query]
926+
[self assertOnlineAndOfflineResultsMatch:collRef
927+
withQuery:[self compositeIndexQuery:query]
916928
expectedDocs:@[ @"doc4", @"doc2" ]];
917929

918930
// explicit OR: a>2 || b<1.
@@ -921,7 +933,8 @@ - (void)testMultipleInequalityFromCacheAndFromServer {
921933
[FIRFilter filterWhereField:@"a" isGreaterThan:@2], [FIRFilter filterWhereField:@"b"
922934
isLessThan:@1]
923935
]]];
924-
[self assertOnlineAndOfflineResultsMatch:[self compositeIndexQuery:query]
936+
[self assertOnlineAndOfflineResultsMatch:collRef
937+
withQuery:[self compositeIndexQuery:query]
925938
expectedDocs:@[ @"doc1", @"doc3" ]];
926939
}
927940

0 commit comments

Comments
 (0)