Skip to content

Commit f099844

Browse files
committed
Apply review comments
1 parent 8ae6540 commit f099844

File tree

5 files changed

+121
-30
lines changed

5 files changed

+121
-30
lines changed

tests/unit/samples/wiring/service.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,17 @@ class Service:
55
class ServiceWithCallable:
66
def __init__(self):
77
self.foo = CallableDict({"bar": lambda: 10})
8-
self.method_with_args = lambda x, y: x + y
9-
self.method_with_kwargs = lambda **kwargs: kwargs
8+
9+
def method_with_args(self, x, y):
10+
return x + y
11+
12+
def method_with_kwargs(self, **kwargs):
13+
return kwargs
1014

1115

1216
class CallableDict(dict):
13-
def __init__(self, data):
14-
super().__init__(data)
15-
self.process = lambda *args, **kwargs: {"args": args, "kwargs": kwargs}
17+
def __init__(self, *args, **kwargs):
18+
super().__init__(*args, **kwargs)
19+
20+
def process(self, *args, **kwargs):
21+
return {"args": args, "kwargs": kwargs}

tests/unit/samples/wiringstringids/container.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from dependency_injector import containers, providers
22

3-
from .service import Service
3+
from .service import Service, ServiceWithCallable
44

55

66
class 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)

tests/unit/samples/wiringstringids/module.py

Lines changed: 60 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,20 @@
44
from typing import Callable
55

66
from dependency_injector.wiring import (
7-
inject,
87
Provide,
98
Provider,
10-
as_int,
11-
as_float,
129
as_,
13-
required,
10+
as_float,
11+
as_int,
12+
inject,
1413
invariant,
1514
provided,
15+
required,
1616
)
1717

1818
from .container import Container
1919
from .service import Service
2020

21-
2221
service: Service = Provide["service"]
2322
service_provider: Callable[..., Service] = Provider["service"]
2423
undefined: Callable = Provide["undefined"]
@@ -55,22 +54,24 @@ def test_function(service: Service = Provide["service"]):
5554

5655

5756
@inject
58-
def test_function_provider(service_provider: Callable[..., Service] = Provider["service"]):
57+
def test_function_provider(
58+
service_provider: Callable[..., Service] = Provider["service"],
59+
):
5960
service = service_provider()
6061
return service
6162

6263

6364
@inject
6465
def test_config_value(
65-
value_int: int = Provide["config.a.b.c", as_int()],
66-
value_float: float = Provide["config.a.b.c", as_float()],
67-
value_str: str = Provide["config.a.b.c", as_(str)],
68-
value_decimal: Decimal = Provide["config.a.b.c", as_(Decimal)],
69-
value_required: str = Provide["config.a.b.c", required()],
70-
value_required_int: int = Provide["config.a.b.c", required().as_int()],
71-
value_required_float: float = Provide["config.a.b.c", required().as_float()],
72-
value_required_str: str = Provide["config.a.b.c", required().as_(str)],
73-
value_required_decimal: str = Provide["config.a.b.c", required().as_(Decimal)],
66+
value_int: int = Provide["config.a.b.c", as_int()],
67+
value_float: float = Provide["config.a.b.c", as_float()],
68+
value_str: str = Provide["config.a.b.c", as_(str)],
69+
value_decimal: Decimal = Provide["config.a.b.c", as_(Decimal)],
70+
value_required: str = Provide["config.a.b.c", required()],
71+
value_required_int: int = Provide["config.a.b.c", required().as_int()],
72+
value_required_float: float = Provide["config.a.b.c", required().as_float()],
73+
value_required_str: str = Provide["config.a.b.c", required().as_(str)],
74+
value_required_decimal: str = Provide["config.a.b.c", required().as_(Decimal)],
7475
):
7576
return (
7677
value_int,
@@ -87,25 +88,60 @@ def test_config_value(
8788

8889
@inject
8990
def test_config_value_required_undefined(
90-
value_required: int = Provide["config.a.b.c", required()],
91+
value_required: int = Provide["config.a.b.c", required()],
9192
):
9293
return value_required
9394

9495

9596
@inject
96-
def test_provide_provider(service_provider: Callable[..., Service] = Provide["service.provider"]):
97+
def test_provide_provider(
98+
service_provider: Callable[..., Service] = Provide["service.provider"],
99+
):
97100
service = service_provider()
98101
return service
99102

100103

101104
@inject
102-
def test_provider_provider(service_provider: Callable[..., Service] = Provider["service.provider"]):
105+
def test_provider_provider(
106+
service_provider: Callable[..., Service] = Provider["service.provider"],
107+
):
103108
service = service_provider()
104109
return service
105110

106111

107112
@inject
108-
def test_provided_instance(some_value: int = Provide["service", provided().foo["bar"].call()]):
113+
def test_provided_instance(
114+
some_value: int = Provide["service", provided().foo["bar"].call()]
115+
):
116+
return some_value
117+
118+
119+
@inject
120+
def test_provided_instance_call_with_args(
121+
some_value: int = Provide[
122+
"service_with_callable",
123+
provided().method_with_args.call(1, 2),
124+
],
125+
):
126+
return some_value
127+
128+
129+
@inject
130+
def test_provided_instance_call_with_kwargs(
131+
some_value: dict = Provide[
132+
"service_with_callable",
133+
provided().method_with_kwargs.call(a=1, b=2),
134+
],
135+
):
136+
return some_value
137+
138+
139+
@inject
140+
def test_provided_instance_call_with_args_and_kwargs(
141+
some_value: dict = Provide[
142+
"service_with_callable", provided().foo.process.call(1, 2, key="value")
143+
]
144+
):
109145
return some_value
110146

111147

@@ -115,14 +151,16 @@ def test_subcontainer_provider(some_value: int = Provide["sub.int_object"]):
115151

116152

117153
@inject
118-
def test_config_invariant(some_value: int = Provide["config.option", invariant("config.switch")]):
154+
def test_config_invariant(
155+
some_value: int = Provide["config.option", invariant("config.switch")]
156+
):
119157
return some_value
120158

121159

122160
@inject
123161
def test_provide_from_different_containers(
124-
service: Service = Provide["service"],
125-
some_value: int = Provide["int_object"],
162+
service: Service = Provide["service"],
163+
some_value: int = Provide["int_object"],
126164
):
127165
return service, some_value
128166

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,21 @@
11
class Service:
22
service_attr: int
3+
4+
5+
class ServiceWithCallable:
6+
def __init__(self):
7+
self.foo = CallableDict({"bar": lambda: 10})
8+
9+
def method_with_args(self, x, y):
10+
return x + y
11+
12+
def method_with_kwargs(self, **kwargs):
13+
return kwargs
14+
15+
16+
class CallableDict(dict):
17+
def __init__(self, *args, **kwargs):
18+
super().__init__(*args, **kwargs)
19+
20+
def process(self, *args, **kwargs):
21+
return {"args": args, "kwargs": kwargs}

tests/unit/wiring/string_ids/test_main_py36.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,21 @@ def resourceclosing_container(request):
5151

5252
def test_package_lookup():
5353
from samples.wiringstringids.package import test_package_function
54+
5455
service = test_package_function()
5556
assert isinstance(service, Service)
5657

5758

5859
def test_package_subpackage_lookup():
5960
from samples.wiringstringids.package.subpackage import test_package_function
61+
6062
service = test_package_function()
6163
assert isinstance(service, Service)
6264

6365

6466
def test_package_submodule_lookup():
6567
from samples.wiringstringids.package.subpackage.submodule import test_function
68+
6669
service = test_function()
6770
assert isinstance(service, Service)
6871

@@ -75,7 +78,13 @@ def test_module_attributes_wiring():
7578

7679
def test_module_attribute_wiring_with_invalid_marker(container: Container):
7780
from samples.wiringstringids import module_invalid_attr_injection
78-
with raises(Exception, match=re.escape("Unknown type of marker {0}".format(module_invalid_attr_injection.service))):
81+
82+
with raises(
83+
Exception,
84+
match=re.escape(
85+
"Unknown type of marker {0}".format(module_invalid_attr_injection.service)
86+
),
87+
):
7988
container.wire(modules=[module_invalid_attr_injection])
8089

8190

@@ -182,7 +191,7 @@ def test_configuration_option():
182191

183192
def test_configuration_option_required_undefined(container: Container):
184193
container.config.reset_override()
185-
with raises(errors.Error, match="Undefined configuration option \"config.a.b.c\""):
194+
with raises(errors.Error, match='Undefined configuration option "config.a.b.c"'):
186195
module.test_config_value_required_undefined()
187196

188197

@@ -205,6 +214,21 @@ class TestService:
205214
assert some_value == 10
206215

207216

217+
def test_provided_instance_call_with_args():
218+
some_value = module.test_provided_instance_call_with_args()
219+
assert some_value == 3
220+
221+
222+
def test_provided_instance_call_with_kwargs():
223+
some_value = module.test_provided_instance_call_with_kwargs()
224+
assert some_value == {"a": 1, "b": 2}
225+
226+
227+
def test_provided_instance_call_with_args_and_kwargs():
228+
some_value = module.test_provided_instance_call_with_args_and_kwargs()
229+
assert some_value == {"args": (1, 2), "kwargs": {"key": "value"}}
230+
231+
208232
def test_subcontainer():
209233
some_value = module.test_subcontainer_provider()
210234
assert some_value == 1
@@ -260,11 +284,13 @@ def test_unwire_class_method(container: Container):
260284
def test_unwire_package_function(container: Container):
261285
container.unwire()
262286
from samples.wiringstringids.package.subpackage.submodule import test_function
287+
263288
assert isinstance(test_function(), Provide)
264289

265290

266291
def test_unwire_package_function_by_reference(container: Container):
267292
from samples.wiringstringids.package.subpackage import submodule
293+
268294
container.unwire()
269295
assert isinstance(submodule.test_function(), Provide)
270296

0 commit comments

Comments
 (0)