Skip to content

Commit 6d27d1a

Browse files
maxepflovilmart
authored andcommitted
Fix wrong precondition bail on REST encoding (#1286)
* Fix wrong condition check on REST encoding * Add REST encoding tests
1 parent b10ccc4 commit 6d27d1a

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

Parse/Parse/PFObject.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -953,7 +953,7 @@ - (NSDictionary *)RESTDictionaryWithObjectEncoder:(PFEncoder *)objectEncoder
953953
id operationDict = [operation RESTDictionaryUsingObjectEncoder:objectEncoder
954954
operationSetUUIDs:&ooSetUUIDs
955955
error:error];
956-
PFPreconditionBailOnError(operation, error, nil);
956+
PFPreconditionBailOnError(operationDict, error, nil);
957957
[operations addObject:operationDict];
958958
[mutableOperationSetUUIDs addObjectsFromArray:ooSetUUIDs];
959959
}

Parse/Tests/Unit/ObjectUnitTests.m

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,5 +327,34 @@ -(void)testSaveRelationToACycleInANestedObject {
327327
XCTAssertEqualObjects(error.localizedDescription, @"Found a circular dependency when saving.");
328328
}
329329

330+
-(void)testRESTEncoding {
331+
PFObject *objectA = [PFObject objectWithClassName:@"A"];
332+
PFObject *objectB = [PFObject objectWithClassName:@"B"];
333+
objectA[@"B"] = objectB;
334+
335+
PFEncoder *encoder = [PFPointerObjectEncoder objectEncoder];
336+
NSError *error = nil;
337+
NSArray *operationSetUUIDs = nil;
338+
XCTAssertNil([objectA RESTDictionaryWithObjectEncoder:encoder
339+
operationSetUUIDs:&operationSetUUIDs
340+
error:&error]);
341+
XCTAssertNotNil(error);
342+
XCTAssertEqualObjects(error.domain, PFParseErrorDomain);
343+
XCTAssertEqualObjects(error.localizedDescription, @"Tried to save an object with a new, unsaved child.");
344+
}
345+
346+
-(void)testLocalRESTEncoding {
347+
PFObject *objectA = [PFObject objectWithClassName:@"A"];
348+
PFObject *objectB = [PFObject objectWithClassName:@"B"];
349+
objectA[@"B"] = objectB;
350+
351+
PFEncoder *encoder = [PFPointerOrLocalIdObjectEncoder objectEncoder];
352+
NSError *error = nil;
353+
NSArray *operationSetUUIDs = nil;
354+
XCTAssertNotNil([objectA RESTDictionaryWithObjectEncoder:encoder
355+
operationSetUUIDs:&operationSetUUIDs
356+
error:&error]);
357+
XCTAssertNil(error);
358+
}
330359

331360
@end

0 commit comments

Comments
 (0)