22
33from decimal import Decimal
44
5- from dependency_injector import errors
6- from dependency_injector .wiring import Closing , Provide , Provider , wire
75from pytest import fixture , mark , raises
8-
96from samples .wiringstringids import module , package , resourceclosing
10- from samples .wiringstringids .service import Service
117from samples .wiringstringids .container import Container , SubContainer
8+ from samples .wiringstringids .service import Service
9+
10+ from dependency_injector import errors
11+ from dependency_injector .wiring import Closing , Provide , Provider , wire
1212
1313
1414@fixture (autouse = True )
@@ -34,10 +34,11 @@ def subcontainer():
3434
3535
3636@fixture
37- def resourceclosing_container ():
37+ def resourceclosing_container (request ):
3838 container = resourceclosing .Container ()
3939 container .wire (modules = [resourceclosing ])
40- yield container
40+ with container .reset_singletons ():
41+ yield container
4142 container .unwire ()
4243
4344
@@ -274,42 +275,65 @@ def test_wire_multiple_containers():
274275
275276@mark .usefixtures ("resourceclosing_container" )
276277def test_closing_resource ():
277- resourceclosing .Service .reset_counter ()
278-
279278 result_1 = resourceclosing .test_function ()
280279 assert isinstance (result_1 , resourceclosing .Service )
281280 assert result_1 .init_counter == 1
282281 assert result_1 .shutdown_counter == 1
282+ assert result_1 .dependencies == {"_list" : [1 , 2 ], "_dict" : {"a" : 3 , "b" : 4 }}
283283
284284 result_2 = resourceclosing .test_function ()
285285 assert isinstance (result_2 , resourceclosing .Service )
286286 assert result_2 .init_counter == 2
287287 assert result_2 .shutdown_counter == 2
288+ assert result_1 .dependencies == {"_list" : [1 , 2 ], "_dict" : {"a" : 3 , "b" : 4 }}
288289
289290 assert result_1 is not result_2
290291
291292
292293@mark .usefixtures ("resourceclosing_container" )
293294def test_closing_dependency_resource ():
294- resourceclosing .Service .reset_counter ()
295-
296295 result_1 = resourceclosing .test_function_dependency ()
297296 assert isinstance (result_1 , resourceclosing .FactoryService )
298- assert result_1 .service .init_counter == 1
299- assert result_1 .service .shutdown_counter == 1
297+ assert result_1 .service .init_counter == 2
298+ assert result_1 .service .shutdown_counter == 2
300299
301300 result_2 = resourceclosing .test_function_dependency ()
301+
302302 assert isinstance (result_2 , resourceclosing .FactoryService )
303- assert result_2 .service .init_counter == 2
304- assert result_2 .service .shutdown_counter == 2
303+ assert result_2 .service .init_counter == 4
304+ assert result_2 .service .shutdown_counter == 4
305+
306+
307+ @mark .usefixtures ("resourceclosing_container" )
308+ def test_closing_dependency_resource_kwargs ():
309+ result_1 = resourceclosing .test_function_dependency_kwargs ()
310+ assert isinstance (result_1 , resourceclosing .FactoryService )
311+ assert result_1 .service .init_counter == 2
312+ assert result_1 .service .shutdown_counter == 2
313+
314+ result_2 = resourceclosing .test_function_dependency_kwargs ()
315+ assert isinstance (result_2 , resourceclosing .FactoryService )
316+ assert result_2 .service .init_counter == 4
317+ assert result_2 .service .shutdown_counter == 4
318+
319+
320+ @mark .usefixtures ("resourceclosing_container" )
321+ def test_closing_nested_dependency_resource ():
322+ result_1 = resourceclosing .test_function_nested_dependency ()
323+ assert isinstance (result_1 , resourceclosing .NestedService )
324+ assert result_1 .factory_service .service .init_counter == 2
325+ assert result_1 .factory_service .service .shutdown_counter == 2
326+
327+ result_2 = resourceclosing .test_function_nested_dependency ()
328+ assert isinstance (result_2 , resourceclosing .NestedService )
329+ assert result_2 .factory_service .service .init_counter == 4
330+ assert result_2 .factory_service .service .shutdown_counter == 4
305331
306332 assert result_1 is not result_2
307333
308334
309335@mark .usefixtures ("resourceclosing_container" )
310336def test_closing_resource_bypass_marker_injection ():
311- resourceclosing .Service .reset_counter ()
312-
313337 result_1 = resourceclosing .test_function (service = Closing [Provide ["service" ]])
314338 assert isinstance (result_1 , resourceclosing .Service )
315339 assert result_1 .init_counter == 1
@@ -325,7 +349,6 @@ def test_closing_resource_bypass_marker_injection():
325349
326350@mark .usefixtures ("resourceclosing_container" )
327351def test_closing_resource_context ():
328- resourceclosing .Service .reset_counter ()
329352 service = resourceclosing .Service ()
330353
331354 result_1 = resourceclosing .test_function (service = service )
0 commit comments