diff options
author | Michael Lehenbauer <mikelehen@gmail.com> | 2018-04-23 10:03:55 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-04-23 10:03:55 -0700 |
commit | e4384c3e809556e75907df74cd116307f397472f (patch) | |
tree | 98841eba1d45eb94adcb798b6f792c16ba4b8d18 /Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm | |
parent | 8e70791465f9b5e4bb75dfc18de4a4ed90961974 (diff) |
Array Contains Queries (not added to public headers yet). (#1138)
Diffstat (limited to 'Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm')
-rw-r--r-- | Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm b/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm index 8d62b4d..bbb3822 100644 --- a/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm +++ b/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm @@ -487,6 +487,18 @@ NS_ASSUME_NONNULL_BEGIN XCTAssertEqualObjects(actual, expected); } +- (void)testEncodesArrayContainsFilter { + FSTRelationFilter *input = FSTTestFilter("item.tags", @"array_contains", @"food"); + GCFSStructuredQuery_Filter *actual = [self.serializer encodedRelationFilter:input]; + + GCFSStructuredQuery_Filter *expected = [GCFSStructuredQuery_Filter message]; + GCFSStructuredQuery_FieldFilter *prop = expected.fieldFilter; + prop.field.fieldPath = @"item.tags"; + prop.op = GCFSStructuredQuery_FieldFilter_Operator_ArrayContains; + prop.value.stringValue = @"food"; + XCTAssertEqualObjects(actual, expected); +} + #pragma mark - encodedQuery - (void)testEncodesFirstLevelKeyQueries { @@ -556,9 +568,10 @@ NS_ASSUME_NONNULL_BEGIN } - (void)testEncodesMultipleFiltersOnDeeperCollections { - FSTQuery *q = [[FSTTestQuery("rooms/1/messages/10/attachments") + FSTQuery *q = [[[FSTTestQuery("rooms/1/messages/10/attachments") queryByAddingFilter:FSTTestFilter("prop", @">=", @(42))] - queryByAddingFilter:FSTTestFilter("author", @"==", @"dimond")]; + queryByAddingFilter:FSTTestFilter("author", @"==", @"dimond")] + queryByAddingFilter:FSTTestFilter("tags", @"array_contains", @"pending")]; FSTQueryData *model = [self queryDataForQuery:q]; GCFSTarget *expected = [GCFSTarget message]; @@ -579,11 +592,18 @@ NS_ASSUME_NONNULL_BEGIN field2.op = GCFSStructuredQuery_FieldFilter_Operator_Equal; field2.value.stringValue = @"dimond"; + GCFSStructuredQuery_Filter *filter3 = [GCFSStructuredQuery_Filter message]; + GCFSStructuredQuery_FieldFilter *field3 = filter3.fieldFilter; + field3.field.fieldPath = @"tags"; + field3.op = GCFSStructuredQuery_FieldFilter_Operator_ArrayContains; + field3.value.stringValue = @"pending"; + GCFSStructuredQuery_CompositeFilter *composite = expected.query.structuredQuery.where.compositeFilter; composite.op = GCFSStructuredQuery_CompositeFilter_Operator_And; [composite.filtersArray addObject:filter1]; [composite.filtersArray addObject:filter2]; + [composite.filtersArray addObject:filter3]; [expected.query.structuredQuery.orderByArray addObject:[GCFSStructuredQuery_Order messageWithProperty:@"prop" ascending:YES]]; |