blob: 864db2b49a9f99509eccc92eef583fd8b5a91729 [file] [log] [blame] [edit]
//
// SMStoreControllerTests.m
// StoreMad
//
// Created by Andrew Smith on 10/15/13.
// Copyright (c) 2013 eGraphs. All rights reserved.
//
#import <XCTest/XCTest.h>
#import "StoreMadBaseTest.h"
#import "Employee.h"
@interface SMStoreControllerTests : StoreMadBaseTest
@end
@implementation SMStoreControllerTests
- (void)setUp
{
[super setUp];
// Put setup code here; it will be run once, before the first test case.
}
- (void)tearDown
{
// Put teardown code here; it will be run once, after the last test case.
[super tearDown];
}
- (void)testDeleteStore
{
[self.storeController.managedObjectContext stm_save];
BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:[self.storeController.storeURL path]];
XCTAssertTrue(exists, @"Store should exist at URL before delete store");
[self.storeController deleteStore];
exists = [[NSFileManager defaultManager] fileExistsAtPath:[self.storeController.storeURL path]];
XCTAssertFalse(exists, @"Store should not exist at URL after delete store");
}
- (void)testResetStore
{
[Employee stm_createInContext:self.testContext];
[self.storeController.managedObjectContext stm_save];
NSError *error;
BOOL reset = [self.storeController resetStore:&error];
XCTAssertTrue(reset, @"Store should be reset");
NSFetchRequest *employeeFetch = [self.testContext stm_fetchRequestForObjectClass:[Employee class]];
NSArray *fetchedEmployees = [self.testContext stm_executeFetchRequest:employeeFetch];
XCTAssertNil(error, @"Should not have an error after reset");
XCTAssertEqual(fetchedEmployees.count, 0, @"Should not have any employees after a reset");
BOOL exists = [[NSFileManager defaultManager] fileExistsAtPath:[self.storeController.storeURL path]];
XCTAssertTrue(exists, @"Store should exist at URL after reset");
}
- (void)testResetStoreSendsNotification {
[self expectationForNotification:kSMStoreControllerDidReset
object:self.storeController
handler:nil];
BOOL reset = [self.storeController resetStore:nil];
XCTAssertTrue(reset, @"Store should be reset");
[self waitForExpectationsWithTimeout:1.0
handler:nil];
}
- (void)testResetStoreShouldHaveSameManagedObjectContext
{
[Employee stm_createInContext:self.testContext];
[self.storeController.managedObjectContext stm_save];
NSManagedObjectContext *context = self.storeController.managedObjectContext;
NSError *error;
[self.storeController resetStore:&error];
XCTAssertEqualObjects(context,
self.storeController.managedObjectContext,
@"Should have the same managed object context after reset");
}
@end