python-dependency-injector/tests/unit/providers/traversal/test_container_py3.py
2021-10-18 10:30:46 -04:00

43 lines
1.2 KiB
Python

"""Container provider traversal tests."""
from dependency_injector import containers, providers
def test_traverse():
class Container(containers.DeclarativeContainer):
provider1 = providers.Callable(list)
provider2 = providers.Callable(dict)
provider = providers.Container(Container)
all_providers = list(provider.traverse())
assert len(all_providers) == 2
assert {list, dict} == {provider.provides for provider in all_providers}
def test_traverse_overridden():
class Container1(containers.DeclarativeContainer):
provider1 = providers.Callable(list)
provider2 = providers.Callable(dict)
class Container2(containers.DeclarativeContainer):
provider1 = providers.Callable(tuple)
provider2 = providers.Callable(str)
container2 = Container2()
provider = providers.Container(Container1)
provider.override(container2)
all_providers = list(provider.traverse())
assert len(all_providers) == 5
assert {list, dict, tuple, str} == {
provider.provides
for provider in all_providers
if isinstance(provider, providers.Callable)
}
assert provider.last_overriding in all_providers
assert provider.last_overriding() is container2