| // |
| // 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 |