6
6
7
7
import unittest2 as unittest
8
8
9
- from dependency_injector import providers
9
+ from dependency_injector import providers , errors
10
10
11
11
12
12
class SelectorTests (unittest .TestCase ):
@@ -33,6 +33,28 @@ def test_call(self):
33
33
with self .selector .override ('two' ):
34
34
self .assertEqual (provider (), 2 )
35
35
36
+ def test_call_undefined_provider (self ):
37
+ provider = providers .Selector (
38
+ self .selector ,
39
+ one = providers .Object (1 ),
40
+ two = providers .Object (2 ),
41
+ )
42
+
43
+ with self .selector .override ('three' ):
44
+ with self .assertRaises (errors .Error ):
45
+ provider ()
46
+
47
+ def test_call_selector_is_none (self ):
48
+ provider = providers .Selector (
49
+ self .selector ,
50
+ one = providers .Object (1 ),
51
+ two = providers .Object (2 ),
52
+ )
53
+
54
+ with self .selector .override (None ):
55
+ with self .assertRaises (errors .Error ):
56
+ provider ()
57
+
36
58
def test_call_any_callable (self ):
37
59
provider = providers .Selector (
38
60
functools .partial (next , itertools .cycle (['one' , 'two' ])),
@@ -70,6 +92,19 @@ def test_getattr(self):
70
92
self .assertIs (provider .one , provider_one )
71
93
self .assertIs (provider .two , provider_two )
72
94
95
+ def test_getattr_attribute_error (self ):
96
+ provider_one = providers .Object (1 )
97
+ provider_two = providers .Object (2 )
98
+
99
+ provider = providers .Selector (
100
+ self .selector ,
101
+ one = provider_one ,
102
+ two = provider_two ,
103
+ )
104
+
105
+ with self .assertRaises (AttributeError ):
106
+ _ = provider .provider_three
107
+
73
108
def test_call_overridden (self ):
74
109
provider = providers .Selector (self .selector , sample = providers .Object (1 ))
75
110
overriding_provider1 = providers .Selector (self .selector , sample = providers .Object (2 ))
@@ -81,6 +116,18 @@ def test_call_overridden(self):
81
116
with self .selector .override ('sample' ):
82
117
self .assertEqual (provider (), 3 )
83
118
119
+ def test_providers_attribute (self ):
120
+ provider_one = providers .Object (1 )
121
+ provider_two = providers .Object (2 )
122
+
123
+ provider = providers .Selector (
124
+ self .selector ,
125
+ one = provider_one ,
126
+ two = provider_two ,
127
+ )
128
+
129
+ self .assertEqual (provider .providers , {'one' : provider_one , 'two' : provider_two })
130
+
84
131
def test_deepcopy (self ):
85
132
provider = providers .Selector (self .selector )
86
133
0 commit comments