mirror of
https://github.com/zhigang1992/RestKit.git
synced 2026-04-25 21:35:36 +08:00
Fix issue where targetObject was not set appropriately when mapping a non-managed object via RKManagedObjectResponseMapperOperation. fixes #1268
This commit is contained in:
@@ -422,6 +422,7 @@ static NSURL *RKRelativeURLFromURLAndResponseDescriptors(NSURL *URL, NSArray *re
|
||||
responseDescriptors:self.responseDescriptors];
|
||||
self.responseMapperOperation.mapperDelegate = self;
|
||||
self.responseMapperOperation.mappingMetadata = self.mappingMetadata;
|
||||
self.responseMapperOperation.targetObject = self.targetObject;
|
||||
self.responseMapperOperation.targetObjectID = self.targetObjectID;
|
||||
self.responseMapperOperation.managedObjectContext = self.privateContext;
|
||||
self.responseMapperOperation.managedObjectCache = self.managedObjectCache;
|
||||
|
||||
@@ -469,6 +469,27 @@ NSSet *RKSetByRemovingSubkeypathsFromSet(NSSet *setOfKeyPaths);
|
||||
expect([[testUser.friendsOrderedSet firstObject] managedObjectContext]).to.equal(managedObjectStore.persistentStoreManagedObjectContext);
|
||||
}
|
||||
|
||||
- (void)testMappingRespectsTargetObjectWhenMappingNonManagedThatIncludesChildManagedObject
|
||||
{
|
||||
RKTestUser *testUser = [RKTestUser new];
|
||||
RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore];
|
||||
RKObjectMapping *userMapping = [RKObjectMapping mappingForClass:[RKTestUser class]];
|
||||
RKEntityMapping *entityMapping = [RKEntityMapping mappingForEntityForName:@"Human" inManagedObjectStore:managedObjectStore];
|
||||
[entityMapping addAttributeMappingsFromArray:@[ @"name" ]];
|
||||
[userMapping addPropertyMapping:[RKRelationshipMapping relationshipMappingFromKeyPath:@"favorite_cat" toKeyPath:@"friendsOrderedSet" withMapping:entityMapping]];
|
||||
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:userMapping pathPattern:nil keyPath:@"human" statusCodes:[NSIndexSet indexSetWithIndex:200]];
|
||||
|
||||
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"/JSON/humans/with_to_one_relationship.json" relativeToURL:[RKTestFactory baseURL]]];
|
||||
RKManagedObjectRequestOperation *managedObjectRequestOperation = [[RKManagedObjectRequestOperation alloc] initWithRequest:request responseDescriptors:@[ responseDescriptor ]];
|
||||
managedObjectRequestOperation.targetObject = testUser;
|
||||
managedObjectRequestOperation.managedObjectContext = managedObjectStore.persistentStoreManagedObjectContext;
|
||||
[managedObjectRequestOperation start];
|
||||
expect(managedObjectRequestOperation.error).to.beNil();
|
||||
expect([managedObjectRequestOperation.mappingResult array]).to.haveCountOf(1);
|
||||
RKTestUser *mappedTestUser = [managedObjectRequestOperation.mappingResult firstObject];
|
||||
expect(mappedTestUser).to.equal(testUser);
|
||||
}
|
||||
|
||||
- (void)testDeletionOfOrphanedManagedObjects
|
||||
{
|
||||
RKManagedObjectStore *managedObjectStore = [RKTestFactory managedObjectStore];
|
||||
|
||||
Reference in New Issue
Block a user