-
Notifications
You must be signed in to change notification settings - Fork 223
/
AddAndRemoveModulesSpecs.m
43 lines (32 loc) · 1.61 KB
/
AddAndRemoveModulesSpecs.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#import "SpecHelper.h"
#import "Fixtures.h"
#import "ModuleFixtures.h"
QuickSpecBegin(AddAndRemoveModulesSpecs)
__block SecondModule *module = nil;
__block JSObjectionInjector *injector = nil;
beforeEach(^{
module = [[SecondModule alloc] init];
gEagerSingletonHook = NO;
injector = [JSObjection createInjector:module];
});
it(@"builds a new injector with new modules", ^{
assertThat([injector getObject:@protocol(GearBox)], is(instanceOf([AfterMarketGearBox class])));
assertThat([injector getObject:[Car class]], isNot(instanceOf([FiveSpeedCar class])));
assertThatBool(gEagerSingletonHook, isFalse());
injector = [injector withModules:
[[ProviderModule alloc] init],
[[FirstModule alloc] init], nil];
assertThat([injector getObject:@protocol(GearBox)], is(instanceOf([AfterMarketGearBox class])));
assertThat([injector getObject:[Car class]], is(instanceOf([FiveSpeedCar class])));
assertThatBool(gEagerSingletonHook, isTrue());
});
it(@"builds a new module without the module types", ^{
injector = [injector withModules:
[[ProviderModule alloc] init], nil];
assertThat([injector getObject:@protocol(GearBox)], is(instanceOf([AfterMarketGearBox class])));
assertThat([injector getObject:[Car class]], is(instanceOf([FiveSpeedCar class])));
injector = [injector withoutModuleOfTypes:[SecondModule class], [ProviderModule class], nil];
assertThat([injector getObject:@protocol(GearBox)], is(nilValue()));
assertThat([injector getObject:[Car class]], isNot(instanceOf([FiveSpeedCar class])));
});
QuickSpecEnd