From f5b31d0ed342fafd338a4b5913a0647d81063ef7 Mon Sep 17 00:00:00 2001 From: Roman Mogylatov Date: Sat, 16 Oct 2021 12:02:05 -0400 Subject: [PATCH] Migrate object provider tests --- tests/unit/providers/test_base_py2_py3.py | 83 ------------------ tests/unit/providers/test_object_py2_py3.py | 93 +++++++++++++++++++++ 2 files changed, 93 insertions(+), 83 deletions(-) create mode 100644 tests/unit/providers/test_object_py2_py3.py diff --git a/tests/unit/providers/test_base_py2_py3.py b/tests/unit/providers/test_base_py2_py3.py index ac537eb0..3fe9635b 100644 --- a/tests/unit/providers/test_base_py2_py3.py +++ b/tests/unit/providers/test_base_py2_py3.py @@ -154,89 +154,6 @@ class ProviderTests(unittest.TestCase): ) -class ObjectProviderTests(unittest.TestCase): - - def test_is_provider(self): - assert providers.is_provider(providers.Object(object())) is True - - def test_init_optional_provides(self): - instance = object() - provider = providers.Object() - provider.set_provides(instance) - assert provider.provides is instance - assert provider() is instance - - def test_set_provides_returns_self(self): - provider = providers.Object() - assert provider.set_provides(object()) is provider - - def test_provided_instance_provider(self): - provider = providers.Object(object()) - assert isinstance(provider.provided, providers.ProvidedInstance) - - def test_call_object_provider(self): - obj = object() - assert providers.Object(obj)() is obj - - def test_call_overridden_object_provider(self): - obj1 = object() - obj2 = object() - provider = providers.Object(obj1) - provider.override(providers.Object(obj2)) - assert provider() is obj2 - - def test_deepcopy(self): - provider = providers.Object(1) - - provider_copy = providers.deepcopy(provider) - - assert provider is not provider_copy - assert isinstance(provider, providers.Object) - - def test_deepcopy_from_memo(self): - provider = providers.Object(1) - provider_copy_memo = providers.Provider() - - provider_copy = providers.deepcopy( - provider, memo={id(provider): provider_copy_memo}) - - assert provider_copy is provider_copy_memo - - def test_deepcopy_overridden(self): - provider = providers.Object(1) - overriding_provider = providers.Provider() - - provider.override(overriding_provider) - - provider_copy = providers.deepcopy(provider) - overriding_provider_copy = provider_copy.overridden[0] - - assert provider is not provider_copy - assert isinstance(provider, providers.Object) - - assert overriding_provider is not overriding_provider_copy - assert isinstance(overriding_provider_copy, providers.Provider) - - def test_deepcopy_doesnt_copy_provided_object(self): - # Fixes bug #231 - # Details: https://github.com/ets-labs/python-dependency-injector/issues/231 - some_object = object() - provider = providers.Object(some_object) - - provider_copy = providers.deepcopy(provider) - - assert provider() is some_object - assert provider_copy() is some_object - - def test_repr(self): - some_object = object() - provider = providers.Object(some_object) - assert repr(provider) == ( - "".format(repr(some_object), hex(id(provider))) - ) - - class SelfProviderTests(unittest.TestCase): def test_is_provider(self): diff --git a/tests/unit/providers/test_object_py2_py3.py b/tests/unit/providers/test_object_py2_py3.py new file mode 100644 index 00000000..d49aa71a --- /dev/null +++ b/tests/unit/providers/test_object_py2_py3.py @@ -0,0 +1,93 @@ +"""Object provider tests.""" + +from dependency_injector import providers + + +def test_is_provider(): + assert providers.is_provider(providers.Object(object())) is True + + +def test_init_optional_provides(): + instance = object() + provider = providers.Object() + provider.set_provides(instance) + assert provider.provides is instance + assert provider() is instance + + +def test_set_provides_returns_(): + provider = providers.Object() + assert provider.set_provides(object()) is provider + + +def test_provided_instance_provider(): + provider = providers.Object(object()) + assert isinstance(provider.provided, providers.ProvidedInstance) + + +def test_call_object_provider(): + obj = object() + assert providers.Object(obj)() is obj + + +def test_call_overridden_object_provider(): + obj1 = object() + obj2 = object() + provider = providers.Object(obj1) + provider.override(providers.Object(obj2)) + assert provider() is obj2 + + +def test_deepcopy(): + provider = providers.Object(1) + + provider_copy = providers.deepcopy(provider) + + assert provider is not provider_copy + assert isinstance(provider, providers.Object) + + +def test_deepcopy_from_memo(): + provider = providers.Object(1) + provider_copy_memo = providers.Provider() + + provider_copy = providers.deepcopy(provider, memo={id(provider): provider_copy_memo}) + + assert provider_copy is provider_copy_memo + + +def test_deepcopy_overridden(): + provider = providers.Object(1) + overriding_provider = providers.Provider() + + provider.override(overriding_provider) + + provider_copy = providers.deepcopy(provider) + overriding_provider_copy = provider_copy.overridden[0] + + assert provider is not provider_copy + assert isinstance(provider, providers.Object) + + assert overriding_provider is not overriding_provider_copy + assert isinstance(overriding_provider_copy, providers.Provider) + + +def test_deepcopy_doesnt_copy_provided_object(): + # Fixes bug #231 + # Details: https://github.com/ets-labs/python-dependency-injector/issues/231 + some_object = object() + provider = providers.Object(some_object) + + provider_copy = providers.deepcopy(provider) + + assert provider() is some_object + assert provider_copy() is some_object + + +def test_repr(): + some_object = object() + provider = providers.Object(some_object) + assert repr(provider) == ( + "".format(repr(some_object), hex(id(provider))) + )