|
19 | 19 | #import "PFTestCase.h"
|
20 | 20 | #import "PFObject.h"
|
21 | 21 | #import "PFObjectPrivate.h"
|
| 22 | +#import "PFFieldOperation.h" |
22 | 23 | #import "PFURLSession.h"
|
23 | 24 | #import "PFURLSessionCommandRunner_Private.h"
|
24 | 25 |
|
@@ -279,4 +280,53 @@ - (void)testLocalIdResolutionFailureWithNoLocalId {
|
279 | 280 | XCTAssertEqualObjects(error.localizedDescription, @"Tried to resolve a localId for an object with no localId.");
|
280 | 281 | }
|
281 | 282 |
|
| 283 | +- (void)testLocalIdResolutionWithArray { |
| 284 | + PFObject *object = [PFObject objectWithClassName:@"Yolo"]; |
| 285 | + id command = [PFRESTCommand commandWithHTTPPath:@"" httpMethod:@"" parameters:@{@"values":@[@(1), object]} sessionToken:nil error:nil]; |
| 286 | + NSError *error; |
| 287 | + [command resolveLocalIds:&error]; |
| 288 | + XCTAssertNotNil(error); |
| 289 | + XCTAssertEqualObjects(error.domain, PFParseErrorDomain); |
| 290 | + XCTAssertEqualObjects(error.localizedDescription, @"Tried to resolve a localId for an object with no localId."); |
| 291 | +} |
| 292 | + |
| 293 | +- (void)testLocalIdResolutionWithArrayAndMutlipleErrors { |
| 294 | + PFObject *objectWithLocalId = [PFObject objectWithoutDataWithClassName:@"Yolo" localId:@"localId"]; |
| 295 | + PFObject *object = [PFObject objectWithClassName:@"Yolo"]; |
| 296 | + id command = [PFRESTCommand commandWithHTTPPath:@"" httpMethod:@"" parameters:@{@"values":@[objectWithLocalId, object]} sessionToken:nil error:nil]; |
| 297 | + NSError *error; |
| 298 | + [command resolveLocalIds:&error]; |
| 299 | + XCTAssertNotNil(error); |
| 300 | + XCTAssertEqualObjects(error.domain, PFParseErrorDomain); |
| 301 | + XCTAssertEqualObjects(error.localizedDescription, @"Tried to save an object with a pointer to a new, unsaved object."); |
| 302 | +} |
| 303 | + |
| 304 | +- (void)testLocalIdResolutionWithOperations { |
| 305 | + NSError *error; |
| 306 | + PFObject *objectWithLocalId = [PFObject objectWithoutDataWithClassName:@"Yolo" localId:@"localId"]; |
| 307 | + PFObject *object = [PFObject objectWithClassName:@"Yolo"]; |
| 308 | + PFAddOperation *addOperation = [PFAddOperation addWithObjects:@[objectWithLocalId, object]]; |
| 309 | + id command = [PFRESTCommand commandWithHTTPPath:@"" httpMethod:@"" parameters:@{@"values":addOperation} sessionToken:nil error:nil]; |
| 310 | + [command resolveLocalIds:&error]; |
| 311 | + XCTAssertNotNil(error); |
| 312 | + XCTAssertEqualObjects(error.domain, PFParseErrorDomain); |
| 313 | + XCTAssertEqualObjects(error.localizedDescription, @"Tried to save an object with a pointer to a new, unsaved object."); |
| 314 | + |
| 315 | + error = nil; |
| 316 | + |
| 317 | + PFAddUniqueOperation *addUniqueOperation = [PFAddUniqueOperation addUniqueWithObjects:@[objectWithLocalId, object]]; |
| 318 | + command = [PFRESTCommand commandWithHTTPPath:@"" httpMethod:@"" parameters:@{@"values":addUniqueOperation} sessionToken:nil error:nil]; |
| 319 | + [command resolveLocalIds:&error]; |
| 320 | + XCTAssertNotNil(error); |
| 321 | + XCTAssertEqualObjects(error.domain, PFParseErrorDomain); |
| 322 | + XCTAssertEqualObjects(error.localizedDescription, @"Tried to save an object with a pointer to a new, unsaved object."); |
| 323 | + |
| 324 | + PFRemoveOperation *removeOperation = [PFRemoveOperation removeWithObjects:@[objectWithLocalId, object]]; |
| 325 | + command = [PFRESTCommand commandWithHTTPPath:@"" httpMethod:@"" parameters:@{@"values":removeOperation} sessionToken:nil error:nil]; |
| 326 | + [command resolveLocalIds:&error]; |
| 327 | + XCTAssertNotNil(error); |
| 328 | + XCTAssertEqualObjects(error.domain, PFParseErrorDomain); |
| 329 | + XCTAssertEqualObjects(error.localizedDescription, @"Tried to save an object with a pointer to a new, unsaved object."); |
| 330 | +} |
| 331 | + |
282 | 332 | @end
|
0 commit comments