Skip to content

Commit

Permalink
Revised save tests
Browse files Browse the repository at this point in the history
  • Loading branch information
tonyarnold committed Dec 13, 2012
1 parent 3161ce8 commit d372914
Showing 1 changed file with 59 additions and 20 deletions.
79 changes: 59 additions & 20 deletions Project Files/Unit Tests/SaveTests.m
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,55 @@ - (void) setUp

- (void) tearDown
{
NSLog(@"Tearing down stack");
[MagicalRecord cleanUp];
}

- (void)testSimpleSynchronousSaveToPersistentStoreActuallySaves
{
NSManagedObjectContext *managedObjectContext = [NSManagedObjectContext MR_contextWithParent:[NSManagedObjectContext MR_defaultContext]];
NSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createInContext:managedObjectContext];

expect([inserted hasChanges]).to.beTruthy();
[managedObjectContext obtainPermanentIDsForObjects:@[inserted] error:nil];
NSManagedObjectID *objectId = inserted.objectID;

[managedObjectContext MR_saveToPersistentStoreAndWait];

NSManagedObject *fetchedObject = [[NSManagedObjectContext MR_rootSavingContext] objectWithID:objectId];
expect(fetchedObject).toNot.beNil();
expect([fetchedObject hasChanges]).to.beFalsy();
}

- (void)testSimpleAsynchronousSaveToPersistentStoreActuallySaves
{
__block NSManagedObjectID *objectId = nil;
NSManagedObjectContext *managedObjectContext = [NSManagedObjectContext MR_contextWithParent:[NSManagedObjectContext MR_defaultContext]];
NSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createInContext:managedObjectContext];

expect([inserted hasChanges]).to.beTruthy();

dispatch_group_t group = dispatch_group_create();
dispatch_group_enter(group);

[managedObjectContext MR_saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) {
[managedObjectContext obtainPermanentIDsForObjects:@[inserted] error:nil];
objectId = inserted.objectID;
dispatch_group_leave(group);
}];

dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
NSManagedObject *fetchedObject = [[NSManagedObjectContext MR_rootSavingContext] objectWithID:objectId];
expect(fetchedObject).toNot.beNil();
expect([fetchedObject hasChanges]).to.beFalsy();
}


- (void)testAsynchronousSaveCallsCompletionHandler
{
__block BOOL completionHandlerCalled = NO;

dispatch_group_t group = dispatch_group_create();

dispatch_group_enter(group);

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) {
Expand Down Expand Up @@ -101,7 +141,6 @@ - (void)testCurrentThreadContextAsynchronousSavesActuallySave
__block NSManagedObject *fetchedObject;

dispatch_group_t group = dispatch_group_create();

dispatch_group_enter(group);

[MagicalRecord saveUsingCurrentContextWithBlock:^(NSManagedObjectContext *localContext) {
Expand All @@ -115,6 +154,7 @@ - (void)testCurrentThreadContextAsynchronousSavesActuallySave
}];

dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
expect(objectId).toNot.beNil();
fetchedObject = [[NSManagedObjectContext MR_rootSavingContext] objectWithID:objectId];
expect(fetchedObject).toNot.beNil();
expect([fetchedObject hasChanges]).to.beFalsy();
Expand All @@ -123,37 +163,36 @@ - (void)testCurrentThreadContextAsynchronousSavesActuallySave
- (void)testCurrentThreadContextSynchronousSavesActuallySave
{
__block NSManagedObjectID *objectId;
__block NSManagedObject *fetchedObject;

[MagicalRecord saveUsingCurrentContextWithBlockAndWait:^(NSManagedObjectContext *localContext) {
NSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createInContext:localContext];
expect([inserted hasChanges]).to.beTruthy();
[localContext obtainPermanentIDsForObjects:@[inserted] error:nil];
objectId = inserted.objectID;
objectId = [inserted.objectID copy];
}];

fetchedObject = [[NSManagedObjectContext MR_rootSavingContext] objectWithID:objectId];
NSManagedObject *fetchedObject = [[NSManagedObjectContext MR_rootSavingContext] existingObjectWithID:objectId error:nil];
expect(fetchedObject).toNot.beNil();
expect([fetchedObject hasChanges]).to.beFalsy();
}

#pragma mark - Test deprecated methods still work as expected

- (void)testDeprecatedSimpleSynchronousSaveActuallySaves
{
NSManagedObjectContext *managedObjectContext = [NSManagedObjectContext MR_defaultContext];
NSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createEntity];

expect([inserted hasChanges]).to.beTruthy();
[managedObjectContext obtainPermanentIDsForObjects:@[inserted] error:nil];
NSManagedObjectID *objectId = inserted.objectID;

[managedObjectContext MR_save];

NSManagedObject *fetchedObject = [[NSManagedObjectContext MR_rootSavingContext] objectWithID:objectId];
expect(fetchedObject).toNot.beNil();
expect([fetchedObject hasChanges]).to.beFalsy();
}
//- (void)testDeprecatedSimpleSynchronousSaveActuallySaves
//{
// NSManagedObjectContext *managedObjectContext = [NSManagedObjectContext MR_defaultContext];
// NSManagedObject *inserted = [SingleEntityWithNoRelationships MR_createEntity];
//
// expect([inserted hasChanges]).to.beTruthy();
// [managedObjectContext obtainPermanentIDsForObjects:@[inserted] error:nil];
// NSManagedObjectID *objectId = inserted.objectID;
//
// [managedObjectContext MR_save];
//
// NSManagedObject *fetchedObject = [[NSManagedObjectContext MR_rootSavingContext] objectWithID:objectId];
// expect(fetchedObject).toNot.beNil();
// expect([fetchedObject hasChanges]).to.beFalsy();
//}

- (void)testDeprecatedBackgroundSaveCallsCompletionHandler
{
Expand Down

0 comments on commit d372914

Please sign in to comment.