Skip to content

Commit bc80681

Browse files
committed
Override ContextManager.sharedInstance only in TestContextManager
There are many places calling `ContextManager.overrideSharedInstance` to set or unset the global `ContextManager` singleton for testing purpose. This change makes `TestContextManager` the only one responsible for that. This change also allows `ContextManagerMock` to be inistantiated without affecting the `ContextManager.shared` singleton, thus avoids sharing state betweetn unit test cases.
1 parent 1f5c972 commit bc80681

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

WordPress/WordPressTest/ContextManagerMock.m

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,6 @@ @implementation ContextManagerMock
1414
@synthesize mainContext = _mainContext;
1515
@synthesize managedObjectModel = _managedObjectModel;
1616

17-
- (instancetype)init
18-
{
19-
self = [super init];
20-
if (self) {
21-
// Override the shared ContextManager
22-
[ContextManager internalSharedInstance];
23-
[ContextManager overrideSharedInstance:self];
24-
}
25-
26-
return self;
27-
}
28-
2917
- (NSManagedObjectModel *)managedObjectModel
3018
{
3119
return _managedObjectModel ?: [super managedObjectModel];

WordPress/WordPressTest/TestContextManager.m

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,24 @@ - (instancetype)init
1010
{
1111
self = [super init];
1212
if (self) {
13-
// Override the shared ContextManager
14-
_stack = [[ContextManagerMock alloc] init];
13+
self.stack = [[ContextManagerMock alloc] init];
1514
}
1615

1716
return self;
1817
}
1918

19+
- (void)setStack:(id<ManagerMock, CoreDataStack>)stack
20+
{
21+
if (stack == _stack) {
22+
return;
23+
}
24+
25+
_stack = stack;
26+
// Override the shared ContextManager
27+
[ContextManager internalSharedInstance];
28+
[ContextManager overrideSharedInstance:_stack];
29+
}
30+
2031
- (NSManagedObjectModel *)managedObjectModel
2132
{
2233
return [_stack managedObjectModel];

0 commit comments

Comments
 (0)