Skip to content

Commit b33a19c

Browse files
committed
Merge pull request #116 from ParsePlatform/nlutsenko.fetch.nothrow
Replace exception with error on PFObject.fetch without an objectId.
2 parents 670d7ec + 63a5968 commit b33a19c

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

Parse/PFObject.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -870,7 +870,6 @@ + (void)_assertValidInstanceClassName:(NSString *)className {
870870
PFParameterAssert(![className hasPrefix:@"_"], @"Invalid class name. Class names cannot start with an underscore.");
871871
}
872872

873-
874873
///--------------------------------------
875874
#pragma mark - Serialization helpers
876875
///--------------------------------------
@@ -2123,9 +2122,10 @@ - (void)fetch:(NSError **)error {
21232122
}
21242123

21252124
- (BFTask *)fetchInBackground {
2126-
//TODO: (nlutsenko) Replace with an error?
2127-
@synchronized (lock) {
2128-
PFParameterAssert(self._state.objectId, @"Can't refresh an object that hasn't been saved to the server.");
2125+
if (!self._state.objectId) {
2126+
NSError *error = [PFErrorUtilities errorWithCode:kPFErrorMissingObjectId
2127+
message:@"Can't refresh an object that hasn't been saved to the server."];
2128+
return [BFTask taskWithError:error];
21292129
}
21302130
return [self.taskQueue enqueue:^BFTask *(BFTask *toAwait) {
21312131
return [self fetchAsync:toAwait];

Tests/Unit/ObjectUnitTests.m

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,4 +182,20 @@ - (void)testKeyValueCoding {
182182
XCTAssertEqualObjects([object valueForKey:@"yarr"], @"yolo");
183183
}
184184

185+
#pragma mark Fetch
186+
187+
- (void)testFetchObjectWithoutObjectIdError {
188+
PFObject *object = [PFObject objectWithClassName:@"Test"];
189+
190+
XCTestExpectation *expectation = [self currentSelectorTestExpectation];
191+
[[object fetchInBackground] continueWithBlock:^id(BFTask *task) {
192+
XCTAssertNotNil(task.error);
193+
XCTAssertEqualObjects(task.error.domain, PFParseErrorDomain);
194+
XCTAssertEqual(task.error.code, kPFErrorMissingObjectId);
195+
[expectation fulfill];
196+
return nil;
197+
}];
198+
[self waitForTestExpectations];
199+
}
200+
185201
@end

0 commit comments

Comments
 (0)