Skip to content

Commit 43a14df

Browse files
committed
Merge remote-tracking branch 'origin-godeltech/702-nested-resource-resolution'
2 parents f3d7e68 + d00afd9 commit 43a14df

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

Diff for: tests/unit/samples/wiringstringids/resourceclosing.py

+12
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ def __init__(self, service: Service):
2525
self.service = service
2626

2727

28+
class NestedService:
29+
def __init__(self, factory_service: FactoryService):
30+
self.factory_service = factory_service
31+
32+
2833
def init_service():
2934
service = Service()
3035
service.init()
@@ -37,6 +42,7 @@ class Container(containers.DeclarativeContainer):
3742
service = providers.Resource(init_service)
3843
factory_service = providers.Factory(FactoryService, service)
3944
factory_service_kwargs = providers.Factory(FactoryService, service=service)
45+
nested_service = providers.Factory(NestedService, factory_service)
4046

4147

4248
@inject
@@ -52,3 +58,9 @@ def test_function_dependency(factory: FactoryService = Closing[Provide["factory_
5258
@inject
5359
def test_function_dependency_kwargs(factory: FactoryService = Closing[Provide["factory_service_kwargs"]]):
5460
return factory
61+
62+
63+
def test_function_nested_dependency(
64+
nested: NestedService = Closing[Provide["nested_service"]]
65+
):
66+
return nested

Diff for: tests/unit/wiring/string_ids/test_main_py36.py

+17
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,23 @@ def test_closing_dependency_resource_kwargs():
319319
assert result_2.service.shutdown_counter == 2
320320

321321

322+
@mark.usefixtures("resourceclosing_container")
323+
def test_closing_nested_dependency_resource():
324+
resourceclosing.Service.reset_counter()
325+
326+
result_1 = resourceclosing.test_function_nested_dependency()
327+
assert isinstance(result_1, resourceclosing.NestedService)
328+
assert result_1.factory_service.service.init_counter == 1
329+
assert result_1.factory_service.service.shutdown_counter == 1
330+
331+
result_2 = resourceclosing.test_function_nested_dependency()
332+
assert isinstance(result_2, resourceclosing.NestedService)
333+
assert result_2.factory_service.service.init_counter == 2
334+
assert result_2.factory_service.service.shutdown_counter == 2
335+
336+
assert result_1 is not result_2
337+
338+
322339
@mark.usefixtures("resourceclosing_container")
323340
def test_closing_resource_bypass_marker_injection():
324341
resourceclosing.Service.reset_counter()

0 commit comments

Comments
 (0)