File tree Expand file tree Collapse file tree 4 files changed +52
-1
lines changed
Expand file tree Collapse file tree 4 files changed +52
-1
lines changed Original file line number Diff line number Diff line change 11from dependency_injector import containers , providers
22
3- from .service import Service
3+ from .service import Service , ServiceWithCallable
44
55
66class SubContainer (containers .DeclarativeContainer ):
@@ -14,4 +14,6 @@ class Container(containers.DeclarativeContainer):
1414
1515 service = providers .Factory (Service )
1616
17+ service_with_callable = providers .Factory (ServiceWithCallable )
18+
1719 sub = providers .Container (SubContainer )
Original file line number Diff line number Diff line change @@ -100,6 +100,27 @@ def test_provided_instance(some_value: int = Provide[Container.service.provided.
100100 return some_value
101101
102102
103+ @inject
104+ def test_provided_instance_call_with_args (
105+ some_value : int = Provide [Container .service_with_callable .provided .method_with_args .call (1 , 2 )]
106+ ):
107+ return some_value
108+
109+
110+ @inject
111+ def test_provided_instance_call_with_kwargs (
112+ some_value : dict = Provide [Container .service_with_callable .provided .method_with_kwargs .call (a = 1 , b = 2 )]
113+ ):
114+ return some_value
115+
116+
117+ @inject
118+ def test_provided_instance_call_with_args_and_kwargs (
119+ some_value : dict = Provide [Container .service_with_callable .provided .foo .process .call (1 , 2 , key = "value" )]
120+ ):
121+ return some_value
122+
123+
103124@inject
104125def test_subcontainer_provider (some_value : int = Provide [Container .sub .int_object ]):
105126 return some_value
Original file line number Diff line number Diff line change 11class Service :
22 service_attr : int
3+
4+
5+ class ServiceWithCallable :
6+ def __init__ (self ):
7+ self .foo = CallableDict ({"bar" : lambda : 10 })
8+ self .method_with_args = lambda x , y : x + y
9+ self .method_with_kwargs = lambda ** kwargs : kwargs
10+
11+
12+ class CallableDict (dict ):
13+ def __init__ (self , data ):
14+ super ().__init__ (data )
15+ self .process = lambda * args , ** kwargs : {"args" : args , "kwargs" : kwargs }
Original file line number Diff line number Diff line change @@ -188,6 +188,21 @@ class TestService:
188188 assert some_value == 10
189189
190190
191+ def test_provided_instance_call_with_args ():
192+ some_value = module .test_provided_instance_call_with_args ()
193+ assert some_value == 3
194+
195+
196+ def test_provided_instance_call_with_kwargs ():
197+ some_value = module .test_provided_instance_call_with_kwargs ()
198+ assert some_value == {"a" : 1 , "b" : 2 }
199+
200+
201+ def test_provided_instance_call_with_args_and_kwargs ():
202+ some_value = module .test_provided_instance_call_with_args_and_kwargs ()
203+ assert some_value == {"args" : (1 , 2 ), "kwargs" : {"key" : "value" }}
204+
205+
191206def test_subcontainer ():
192207 some_value = module .test_subcontainer_provider ()
193208 assert some_value == 1
You can’t perform that action at this time.
0 commit comments