diff options
Diffstat (limited to 'Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm')
-rw-r--r-- | Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm b/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm index a648cd8..8ddddb0 100644 --- a/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm +++ b/Firestore/Example/Tests/Remote/FSTSerializerBetaTests.mm @@ -367,7 +367,7 @@ NS_ASSUME_NONNULL_BEGIN [self assertRoundTripForMutation:mutation proto:proto]; } -- (void)testEncodesTransformMutation { +- (void)testEncodesServerTimestampTransformMutation { FSTTransformMutation *mutation = FSTTestTransformMutation(@"docs/1", @{ @"a" : [FIRFieldValue fieldValueForServerTimestamp], @"bar.baz" : [FIRFieldValue fieldValueForServerTimestamp] @@ -382,6 +382,38 @@ NS_ASSUME_NONNULL_BEGIN [self assertRoundTripForMutation:mutation proto:proto]; } +- (void)testEncodesArrayTransformMutations { + FSTTransformMutation *mutation = FSTTestTransformMutation(@"docs/1", @{ + @"a" : [FIRFieldValue fieldValueForArrayUnion:@[ @"a", @2 ]], + @"bar.baz" : [FIRFieldValue fieldValueForArrayRemove:@[ + @{ @"x" : @1 } + ]] + }); + GCFSWrite *proto = [GCFSWrite message]; + proto.transform = [GCFSDocumentTransform message]; + proto.transform.document = [self.serializer encodedDocumentKey:mutation.key]; + + GCFSDocumentTransform_FieldTransform *arrayUnion = [GCFSDocumentTransform_FieldTransform message]; + arrayUnion.fieldPath = @"a"; + arrayUnion.appendMissingElements = [GCFSArrayValue message]; + NSMutableArray *unionElements = arrayUnion.appendMissingElements.valuesArray; + [unionElements addObject:[self.serializer encodedFieldValue:FSTTestFieldValue(@"a")]]; + [unionElements addObject:[self.serializer encodedFieldValue:FSTTestFieldValue(@2)]]; + [proto.transform.fieldTransformsArray addObject:arrayUnion]; + + GCFSDocumentTransform_FieldTransform *arrayRemove = + [GCFSDocumentTransform_FieldTransform message]; + arrayRemove.fieldPath = @"bar.baz"; + arrayRemove.removeAllFromArray_p = [GCFSArrayValue message]; + NSMutableArray *removeElements = arrayRemove.removeAllFromArray_p.valuesArray; + [removeElements addObject:[self.serializer encodedFieldValue:FSTTestFieldValue(@{ @"x" : @1 })]]; + [proto.transform.fieldTransformsArray addObject:arrayRemove]; + + proto.currentDocument.exists = YES; + + [self assertRoundTripForMutation:mutation proto:proto]; +} + - (void)testEncodesSetMutationWithPrecondition { FSTSetMutation *mutation = [[FSTSetMutation alloc] initWithKey:FSTTestDocKey(@"foo/bar") |