From f85b761607b98bb9456ab742cc869d656d0653fc Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Mon, 18 Oct 2021 14:53:10 -0400 Subject: [PATCH] Migrate provided instance provider tests --- .../test_provided_instance_py2_py3.py | 248 +++++++++--------- 1 file changed, 127 insertions(+), 121 deletions(-) diff --git a/tests/unit/providers/test_provided_instance_py2_py3.py b/tests/unit/providers/test_provided_instance_py2_py3.py index 75e12084..d5ba7730 100644 --- a/tests/unit/providers/test_provided_instance_py2_py3.py +++ b/tests/unit/providers/test_provided_instance_py2_py3.py @@ -1,8 +1,7 @@ -"""Dependency injector provided instance provider unit tests.""" - -import unittest +"""ProvidedInstance provider tests.""" from dependency_injector import containers, providers +from pytest import fixture class Service: @@ -64,133 +63,140 @@ class Container(containers.DeclarativeContainer): ) -class ProvidedInstanceTests(unittest.TestCase): - - def setUp(self): - self.container = Container() - - def test_is_provider(self): - assert providers.is_provider(self.container.service.provided) is True - - def test_attribute(self): - client = self.container.client_attribute() - assert client.value == "foo" - - def test_item(self): - client = self.container.client_item() - assert client.value == "foo" - - def test_attribute_item(self): - client = self.container.client_attribute_item() - assert client.value == "foo" - - def test_method_call(self): - client = self.container.client_method_call() - assert client.value == "foo" - - def test_method_closure_call(self): - client = self.container.client_method_closure_call() - assert client.value == "foo" - - def test_provided_call(self): - client = self.container.client_provided_call() - assert client.value == "foo" - - def test_call_overridden(self): - value = "bar" - with self.container.service.override(Service(value)): - assert self.container.client_attribute().value == value - assert self.container.client_item().value == value - assert self.container.client_attribute_item().value == value - assert self.container.client_method_call().value == value - - def test_repr_provided_instance(self): - provider = self.container.service.provided - assert repr(provider) == "ProvidedInstance(\"{0}\")".format(repr(self.container.service)) - - def test_repr_attribute_getter(self): - provider = self.container.service.provided.value - assert repr(provider) == "AttributeGetter(\"value\")" - - def test_repr_item_getter(self): - provider = self.container.service.provided["test-test"] - assert repr(provider) == "ItemGetter(\"test-test\")" +@fixture +def container(): + return Container() -class LazyInitTests(unittest.TestCase): - - def test_provided_instance(self): - provides = providers.Object(object()) - provider = providers.ProvidedInstance() - provider.set_provides(provides) - assert provider.provides is provides - assert provider.set_provides(providers.Provider()) is provider - - def test_attribute_getter(self): - provides = providers.Object(object()) - provider = providers.AttributeGetter() - provider.set_provides(provides) - provider.set_name("__dict__") - assert provider.provides is provides - assert provider.name == "__dict__" - assert provider.set_provides(providers.Provider()) is provider - assert provider.set_name("__dict__") is provider - - def test_item_getter(self): - provides = providers.Object({"foo": "bar"}) - provider = providers.ItemGetter() - provider.set_provides(provides) - provider.set_name("foo") - assert provider.provides is provides - assert provider.name == "foo" - assert provider.set_provides(providers.Provider()) is provider - assert provider.set_name("foo") is provider - - def test_method_caller(self): - provides = providers.Object(lambda: 42) - provider = providers.MethodCaller() - provider.set_provides(provides) - assert provider.provides is provides - assert provider() == 42 - assert provider.set_provides(providers.Provider()) is provider +def test_is_provider(container): + assert providers.is_provider(container.service.provided) is True -class ProvidedInstancePuzzleTests(unittest.TestCase): +def test_attribute(container): + client = container.client_attribute() + assert client.value == "foo" - def test_puzzled(self): - service = providers.Singleton(Service, value="foo-bar") - dependency = providers.Object( - { - "a": { - "b": { - "c1": 10, - "c2": lambda arg: {"arg": arg} - }, +def test_item(container): + client = container.client_item() + assert client.value == "foo" + + +def test_attribute_item(container): + client = container.client_attribute_item() + assert client.value == "foo" + + +def test_method_call(container): + client = container.client_method_call() + assert client.value == "foo" + + +def test_method_closure_call(container): + client = container.client_method_closure_call() + assert client.value == "foo" + + +def test_provided_call(container): + client = container.client_provided_call() + assert client.value == "foo" + + +def test_call_overridden(container): + value = "bar" + with container.service.override(Service(value)): + assert container.client_attribute().value == value + assert container.client_item().value == value + assert container.client_attribute_item().value == value + assert container.client_method_call().value == value + + +def test_repr_provided_instance(container): + provider = container.service.provided + assert repr(provider) == "ProvidedInstance(\"{0}\")".format(repr(container.service)) + + +def test_repr_attribute_getter(container): + provider = container.service.provided.value + assert repr(provider) == "AttributeGetter(\"value\")" + + +def test_repr_item_getter(container): + provider = container.service.provided["test-test"] + assert repr(provider) == "ItemGetter(\"test-test\")" + + +def test_provided_instance(): + provides = providers.Object(object()) + provider = providers.ProvidedInstance() + provider.set_provides(provides) + assert provider.provides is provides + assert provider.set_provides(providers.Provider()) is provider + + +def test_attribute_getter(): + provides = providers.Object(object()) + provider = providers.AttributeGetter() + provider.set_provides(provides) + provider.set_name("__dict__") + assert provider.provides is provides + assert provider.name == "__dict__" + assert provider.set_provides(providers.Provider()) is provider + assert provider.set_name("__dict__") is provider + + +def test_item_getter(): + provides = providers.Object({"foo": "bar"}) + provider = providers.ItemGetter() + provider.set_provides(provides) + provider.set_name("foo") + assert provider.provides is provides + assert provider.name == "foo" + assert provider.set_provides(providers.Provider()) is provider + assert provider.set_name("foo") is provider + + +def test_method_caller(): + provides = providers.Object(lambda: 42) + provider = providers.MethodCaller() + provider.set_provides(provides) + assert provider.provides is provides + assert provider() == 42 + assert provider.set_provides(providers.Provider()) is provider + + +def test_puzzled(): + service = providers.Singleton(Service, value="foo-bar") + + dependency = providers.Object( + { + "a": { + "b": { + "c1": 10, + "c2": lambda arg: {"arg": arg} }, }, - ) + }, + ) - test_list = providers.List( - dependency.provided["a"]["b"]["c1"], - dependency.provided["a"]["b"]["c2"].call(22)["arg"], - dependency.provided["a"]["b"]["c2"].call(service)["arg"], - dependency.provided["a"]["b"]["c2"].call(service)["arg"].value, - dependency.provided["a"]["b"]["c2"].call(service)["arg"].get_value.call(), - ) + test_list = providers.List( + dependency.provided["a"]["b"]["c1"], + dependency.provided["a"]["b"]["c2"].call(22)["arg"], + dependency.provided["a"]["b"]["c2"].call(service)["arg"], + dependency.provided["a"]["b"]["c2"].call(service)["arg"].value, + dependency.provided["a"]["b"]["c2"].call(service)["arg"].get_value.call(), + ) - result = test_list() - assert result == [ - 10, - 22, - service(), - "foo-bar", - "foo-bar", - ] + result = test_list() + assert result == [ + 10, + 22, + service(), + "foo-bar", + "foo-bar", + ] -class ProvidedInstanceInBaseClassTests(unittest.TestCase): - - def test_provided_attribute(self): - provider = providers.Provider() - assert isinstance(provider.provided, providers.ProvidedInstance) +def test_provided_attribute_in_base_class(): + provider = providers.Provider() + assert isinstance(provider.provided, providers.ProvidedInstance)