diff --git a/tests/unit/providers/test_dict_py2_py3.py b/tests/unit/providers/test_dict_py2_py3.py index dab091bc..306d8a23 100644 --- a/tests/unit/providers/test_dict_py2_py3.py +++ b/tests/unit/providers/test_dict_py2_py3.py @@ -1,227 +1,245 @@ -"""Dependency injector dict provider unit tests.""" +"""Dict provider tests.""" import sys -import unittest - from dependency_injector import providers -class DictTests(unittest.TestCase): - - def test_is_provider(self): - assert providers.is_provider(providers.Dict()) is True +def test_is_provider(): + assert providers.is_provider(providers.Dict()) is True + + +def test_provided_instance_provider(): + provider = providers.Dict() + assert isinstance(provider.provided, providers.ProvidedInstance) + + +def test_init_with_non_string_keys(): + a1 = object() + a2 = object() + provider = providers.Dict({a1: "i1", a2: "i2"}) + + dict1 = provider() + dict2 = provider() + + assert dict1 == {a1: "i1", a2: "i2"} + assert dict2 == {a1: "i1", a2: "i2"} + + assert dict1 is not dict2 + + +def test_init_with_string_and_non_string_keys(): + a1 = object() + provider = providers.Dict({a1: "i1"}, a2="i2") + + dict1 = provider() + dict2 = provider() + + assert dict1 == {a1: "i1", "a2": "i2"} + assert dict2 == {a1: "i1", "a2": "i2"} + + assert dict1 is not dict2 + + +def test_call_with_init_keyword_args(): + provider = providers.Dict(a1="i1", a2="i2") + + dict1 = provider() + dict2 = provider() + + assert dict1 == {"a1": "i1", "a2": "i2"} + assert dict2 == {"a1": "i1", "a2": "i2"} + + assert dict1 is not dict2 + + +def test_call_with_context_keyword_args(): + provider = providers.Dict(a1="i1", a2="i2") + assert provider(a3="i3", a4="i4") == {"a1": "i1", "a2": "i2", "a3": "i3", "a4": "i4"} + + +def test_call_with_provider(): + provider = providers.Dict( + a1=providers.Factory(str, "i1"), + a2=providers.Factory(str, "i2"), + ) + assert provider() == {"a1": "i1", "a2": "i2"} + + +def test_fluent_interface(): + provider = providers.Dict() \ + .add_kwargs(a1="i1", a2="i2") + assert provider() == {"a1": "i1", "a2": "i2"} + + +def test_add_kwargs(): + provider = providers.Dict() \ + .add_kwargs(a1="i1") \ + .add_kwargs(a2="i2") + assert provider.kwargs == {"a1": "i1", "a2": "i2"} + + +def test_add_kwargs_non_string_keys(): + a1 = object() + a2 = object() + provider = providers.Dict() \ + .add_kwargs({a1: "i1"}) \ + .add_kwargs({a2: "i2"}) + assert provider.kwargs == {a1: "i1", a2: "i2"} + + +def test_add_kwargs_string_and_non_string_keys(): + a2 = object() + provider = providers.Dict() \ + .add_kwargs(a1="i1") \ + .add_kwargs({a2: "i2"}) + assert provider.kwargs == {"a1": "i1", a2: "i2"} + + +def test_set_kwargs(): + provider = providers.Dict() \ + .add_kwargs(a1="i1", a2="i2") \ + .set_kwargs(a3="i3", a4="i4") + assert provider.kwargs == {"a3": "i3", "a4": "i4"} + - def test_provided_instance_provider(self): - provider = providers.Dict() - assert isinstance(provider.provided, providers.ProvidedInstance) +def test_set_kwargs_non_string_keys(): + a3 = object() + a4 = object() + provider = providers.Dict() \ + .add_kwargs(a1="i1", a2="i2") \ + .set_kwargs({a3: "i3", a4: "i4"}) + assert provider.kwargs == {a3: "i3", a4: "i4"} - def test_init_with_non_string_keys(self): - a1 = object() - a2 = object() - provider = providers.Dict({a1: "i1", a2: "i2"}) - - dict1 = provider() - dict2 = provider() - assert dict1 == {a1: "i1", a2: "i2"} - assert dict2 == {a1: "i1", a2: "i2"} +def test_set_kwargs_string_and_non_string_keys(): + a3 = object() + provider = providers.Dict() \ + .add_kwargs(a1="i1", a2="i2") \ + .set_kwargs({a3: "i3"}, a4="i4") + assert provider.kwargs == {a3: "i3", "a4": "i4"} - assert dict1 is not dict2 - - def test_init_with_string_and_non_string_keys(self): - a1 = object() - provider = providers.Dict({a1: "i1"}, a2="i2") - - dict1 = provider() - dict2 = provider() - assert dict1 == {a1: "i1", "a2": "i2"} - assert dict2 == {a1: "i1", "a2": "i2"} +def test_clear_kwargs(): + provider = providers.Dict() \ + .add_kwargs(a1="i1", a2="i2") \ + .clear_kwargs() + assert provider.kwargs == {} - assert dict1 is not dict2 - def test_call_with_init_keyword_args(self): - provider = providers.Dict(a1="i1", a2="i2") +def test_call_overridden(): + provider = providers.Dict(a1="i1", a2="i2") + overriding_provider1 = providers.Dict(a2="i2", a3="i3") + overriding_provider2 = providers.Dict(a3="i3", a4="i4") - dict1 = provider() - dict2 = provider() + provider.override(overriding_provider1) + provider.override(overriding_provider2) - assert dict1 == {"a1": "i1", "a2": "i2"} - assert dict2 == {"a1": "i1", "a2": "i2"} + instance1 = provider() + instance2 = provider() - assert dict1 is not dict2 + assert instance1 is not instance2 + assert instance1 == {"a3": "i3", "a4": "i4"} + assert instance2 == {"a3": "i3", "a4": "i4"} - def test_call_with_context_keyword_args(self): - provider = providers.Dict(a1="i1", a2="i2") - assert provider(a3="i3", a4="i4") == {"a1": "i1", "a2": "i2", "a3": "i3", "a4": "i4"} - def test_call_with_provider(self): - provider = providers.Dict( - a1=providers.Factory(str, "i1"), - a2=providers.Factory(str, "i2"), - ) - assert provider() == {"a1": "i1", "a2": "i2"} +def test_deepcopy(): + provider = providers.Dict(a1="i1", a2="i2") - def test_fluent_interface(self): - provider = providers.Dict() \ - .add_kwargs(a1="i1", a2="i2") - assert provider() == {"a1": "i1", "a2": "i2"} + provider_copy = providers.deepcopy(provider) - def test_add_kwargs(self): - provider = providers.Dict() \ - .add_kwargs(a1="i1") \ - .add_kwargs(a2="i2") - assert provider.kwargs == {"a1": "i1", "a2": "i2"} + assert provider is not provider_copy + assert provider.kwargs == provider_copy.kwargs + assert isinstance(provider, providers.Dict) - def test_add_kwargs_non_string_keys(self): - a1 = object() - a2 = object() - provider = providers.Dict() \ - .add_kwargs({a1: "i1"}) \ - .add_kwargs({a2: "i2"}) - assert provider.kwargs == {a1: "i1", a2: "i2"} - def test_add_kwargs_string_and_non_string_keys(self): - a2 = object() - provider = providers.Dict() \ - .add_kwargs(a1="i1") \ - .add_kwargs({a2: "i2"}) - assert provider.kwargs == {"a1": "i1", a2: "i2"} +def test_deepcopy_from_memo(): + provider = providers.Dict(a1="i1", a2="i2") + provider_copy_memo = providers.Dict(a1="i1", a2="i2") - def test_set_kwargs(self): - provider = providers.Dict() \ - .add_kwargs(a1="i1", a2="i2") \ - .set_kwargs(a3="i3", a4="i4") - assert provider.kwargs == {"a3": "i3", "a4": "i4"} + provider_copy = providers.deepcopy( + provider, + memo={id(provider): provider_copy_memo}, + ) - def test_set_kwargs_non_string_keys(self): - a3 = object() - a4 = object() - provider = providers.Dict() \ - .add_kwargs(a1="i1", a2="i2") \ - .set_kwargs({a3: "i3", a4: "i4"}) - assert provider.kwargs == {a3: "i3", a4: "i4"} + assert provider_copy is provider_copy_memo - def test_set_kwargs_string_and_non_string_keys(self): - a3 = object() - provider = providers.Dict() \ - .add_kwargs(a1="i1", a2="i2") \ - .set_kwargs({a3: "i3"}, a4="i4") - assert provider.kwargs == {a3: "i3", "a4": "i4"} - def test_clear_kwargs(self): - provider = providers.Dict() \ - .add_kwargs(a1="i1", a2="i2") \ - .clear_kwargs() - assert provider.kwargs == {} +def test_deepcopy_kwargs(): + provider = providers.Dict() + dependent_provider1 = providers.Factory(list) + dependent_provider2 = providers.Factory(dict) - def test_call_overridden(self): - provider = providers.Dict(a1="i1", a2="i2") - overriding_provider1 = providers.Dict(a2="i2", a3="i3") - overriding_provider2 = providers.Dict(a3="i3", a4="i4") + provider.add_kwargs(d1=dependent_provider1, d2=dependent_provider2) - provider.override(overriding_provider1) - provider.override(overriding_provider2) + provider_copy = providers.deepcopy(provider) + dependent_provider_copy1 = provider_copy.kwargs["d1"] + dependent_provider_copy2 = provider_copy.kwargs["d2"] - instance1 = provider() - instance2 = provider() + assert provider.kwargs != provider_copy.kwargs - assert instance1 is not instance2 - assert instance1 == {"a3": "i3", "a4": "i4"} - assert instance2 == {"a3": "i3", "a4": "i4"} + assert dependent_provider1.cls is dependent_provider_copy1.cls + assert dependent_provider1 is not dependent_provider_copy1 - def test_deepcopy(self): - provider = providers.Dict(a1="i1", a2="i2") + assert dependent_provider2.cls is dependent_provider_copy2.cls + assert dependent_provider2 is not dependent_provider_copy2 - provider_copy = providers.deepcopy(provider) - assert provider is not provider_copy - assert provider.kwargs == provider_copy.kwargs - assert isinstance(provider, providers.Dict) +def test_deepcopy_kwargs_non_string_keys(): + a1 = object() + a2 = object() - def test_deepcopy_from_memo(self): - provider = providers.Dict(a1="i1", a2="i2") - provider_copy_memo = providers.Dict(a1="i1", a2="i2") + dependent_provider1 = providers.Factory(list) + dependent_provider2 = providers.Factory(dict) - provider_copy = providers.deepcopy( - provider, - memo={id(provider): provider_copy_memo}, - ) - - assert provider_copy is provider_copy_memo - - def test_deepcopy_kwargs(self): - provider = providers.Dict() - dependent_provider1 = providers.Factory(list) - dependent_provider2 = providers.Factory(dict) - - provider.add_kwargs(d1=dependent_provider1, d2=dependent_provider2) - - provider_copy = providers.deepcopy(provider) - dependent_provider_copy1 = provider_copy.kwargs["d1"] - dependent_provider_copy2 = provider_copy.kwargs["d2"] - - assert provider.kwargs != provider_copy.kwargs - - assert dependent_provider1.cls is dependent_provider_copy1.cls - assert dependent_provider1 is not dependent_provider_copy1 + provider = providers.Dict({a1: dependent_provider1, a2: dependent_provider2}) - assert dependent_provider2.cls is dependent_provider_copy2.cls - assert dependent_provider2 is not dependent_provider_copy2 - - def test_deepcopy_kwargs_non_string_keys(self): - a1 = object() - a2 = object() + provider_copy = providers.deepcopy(provider) + dependent_provider_copy1 = provider_copy.kwargs[a1] + dependent_provider_copy2 = provider_copy.kwargs[a2] - dependent_provider1 = providers.Factory(list) - dependent_provider2 = providers.Factory(dict) + assert provider.kwargs != provider_copy.kwargs - provider = providers.Dict({a1: dependent_provider1, a2: dependent_provider2}) + assert dependent_provider1.cls is dependent_provider_copy1.cls + assert dependent_provider1 is not dependent_provider_copy1 - provider_copy = providers.deepcopy(provider) - dependent_provider_copy1 = provider_copy.kwargs[a1] - dependent_provider_copy2 = provider_copy.kwargs[a2] + assert dependent_provider2.cls is dependent_provider_copy2.cls + assert dependent_provider2 is not dependent_provider_copy2 - assert provider.kwargs != provider_copy.kwargs - assert dependent_provider1.cls is dependent_provider_copy1.cls - assert dependent_provider1 is not dependent_provider_copy1 +def test_deepcopy_overridden(): + provider = providers.Dict() + object_provider = providers.Object(object()) - assert dependent_provider2.cls is dependent_provider_copy2.cls - assert dependent_provider2 is not dependent_provider_copy2 + provider.override(object_provider) - def test_deepcopy_overridden(self): - provider = providers.Dict() - object_provider = providers.Object(object()) + provider_copy = providers.deepcopy(provider) + object_provider_copy = provider_copy.overridden[0] - provider.override(object_provider) + assert provider is not provider_copy + assert provider.kwargs == provider_copy.kwargs + assert isinstance(provider, providers.Dict) - provider_copy = providers.deepcopy(provider) - object_provider_copy = provider_copy.overridden[0] + assert object_provider is not object_provider_copy + assert isinstance(object_provider_copy, providers.Object) - assert provider is not provider_copy - assert provider.kwargs == provider_copy.kwargs - assert isinstance(provider, providers.Dict) - assert object_provider is not object_provider_copy - assert isinstance(object_provider_copy, providers.Object) +def test_deepcopy_with_sys_streams(): + provider = providers.Dict() + provider.add_kwargs(stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr) - def test_deepcopy_with_sys_streams(self): - provider = providers.Dict() - provider.add_kwargs(stdin=sys.stdin, stdout=sys.stdout, stderr=sys.stderr) + provider_copy = providers.deepcopy(provider) - provider_copy = providers.deepcopy(provider) + assert provider is not provider_copy + assert isinstance(provider_copy, providers.Dict) + assert provider.kwargs["stdin"] is sys.stdin + assert provider.kwargs["stdout"] is sys.stdout + assert provider.kwargs["stderr"] is sys.stderr - assert provider is not provider_copy - assert isinstance(provider_copy, providers.Dict) - assert provider.kwargs["stdin"] is sys.stdin - assert provider.kwargs["stdout"] is sys.stdout - assert provider.kwargs["stderr"] is sys.stderr - def test_repr(self): - provider = providers.Dict(a1=1, a2=2) - assert repr(provider) == ( - "".format(repr(provider.kwargs), hex(id(provider))) - ) +def test_repr(): + provider = providers.Dict(a1=1, a2=2) + assert repr(provider) == ( + "".format(repr(provider.kwargs), hex(id(provider))) + ) diff --git a/tests/unit/providers/test_list_py2_py3.py b/tests/unit/providers/test_list_py2_py3.py index 86bee195..9e709bd4 100644 --- a/tests/unit/providers/test_list_py2_py3.py +++ b/tests/unit/providers/test_list_py2_py3.py @@ -1,4 +1,4 @@ -"""Dependency injector list provider unit tests.""" +"""List provider tests.""" import sys