-
Notifications
You must be signed in to change notification settings - Fork 223
/
InjectionErrorsSpecs.m
45 lines (33 loc) · 2.01 KB
/
InjectionErrorsSpecs.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
44
45
#import "SpecHelper.h"
#import "InjectionErrorFixtures.h"
#import "Fixtures.h"
QuickSpecBegin(InjectionErrorsSpecs)
beforeEach(^{
JSObjectionInjector *injector = [JSObjection createInjector];
[JSObjection setDefaultInjector:injector];
});
it(@"throws an exception if property type is not an object", ^{
expectAction([[JSObjection defaultInjector] getObject:[UnsupportedPropertyObject class]]).to(raiseException().reason(@"Unable to determine class type for property declaration: 'myInteger'"));
});
it(@"throws an exception if property cannot be found", ^{
expectAction([[JSObjection defaultInjector] getObject:[BadPropertyObject class]]).to(raiseException().reason(@"Unable to find property declaration: 'badProperty' for class 'BadPropertyObject'"));
});
it(@"throws if an object requires a protocol that does not exist in the context", ^{
expectAction([[JSObjection defaultInjector] getObject:[FiveSpeedCar class]]).to(raiseException().reason(@"Cannot find an instance that is bound to the protocol 'GearBox' to assign to the property 'gearBox'"));
});
it(@"throws if instantiation rule is not valid", ^{
expectAction([JSObjection registerClass:[CarFactory class] scope:3]).to(raiseException().reason(@"Invalid Instantiation Rule"));
});
describe(@"named properties",^{
beforeEach(^{
JSObjectionInjector *injector = [JSObjection createInjector];
[JSObjection setDefaultInjector:injector];
});
it(@"throws an exception if property type is not an object", ^{
expectAction([[JSObjection defaultInjector] getObject:[NamedUnsupportedPropertyObject class]]).to(raiseException().reason(@"Unable to determine class type for property declaration: 'myInteger'"));
});
it(@"throws an exception if property cannot be found", ^{
expectAction([[JSObjection defaultInjector] getObject:[NamedBadPropertyObject class]]).to(raiseException().reason(@"Unable to find property declaration: 'badProperty' for class 'NamedBadPropertyObject'"));
});
});
QuickSpecEnd