aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm
diff options
context:
space:
mode:
authorGravatar Michael Lehenbauer <mikelehen@gmail.com>2018-04-23 10:03:55 -0700
committerGravatar GitHub <noreply@github.com>2018-04-23 10:03:55 -0700
commite4384c3e809556e75907df74cd116307f397472f (patch)
tree98841eba1d45eb94adcb798b6f792c16ba4b8d18 /Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm
parent8e70791465f9b5e4bb75dfc18de4a4ed90961974 (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.mm24
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]];