mirror of
https://github.com/ets-labs/python-dependency-injector.git
synced 2025-07-05 04:43:30 +03:00
Add Container provider tests
This commit is contained in:
parent
fc83d3282c
commit
edcd542fdf
|
@ -1,6 +1,6 @@
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from dependency_injector import providers
|
from dependency_injector import containers, providers
|
||||||
|
|
||||||
|
|
||||||
class TraverseTests(unittest.TestCase):
|
class TraverseTests(unittest.TestCase):
|
||||||
|
@ -625,3 +625,49 @@ class ResourceTests(unittest.TestCase):
|
||||||
|
|
||||||
self.assertEqual(len(all_providers), 1)
|
self.assertEqual(len(all_providers), 1)
|
||||||
self.assertIn(provider1, all_providers)
|
self.assertIn(provider1, all_providers)
|
||||||
|
|
||||||
|
|
||||||
|
class ContainerTests(unittest.TestCase):
|
||||||
|
|
||||||
|
def test_traverse(self):
|
||||||
|
class Container(containers.DeclarativeContainer):
|
||||||
|
provider1 = providers.Callable(list)
|
||||||
|
provider2 = providers.Callable(dict)
|
||||||
|
|
||||||
|
provider = providers.Container(Container)
|
||||||
|
|
||||||
|
all_providers = list(provider.traverse())
|
||||||
|
|
||||||
|
self.assertEqual(len(all_providers), 2)
|
||||||
|
self.assertEqual(
|
||||||
|
{provider.provides for provider in all_providers},
|
||||||
|
{list, dict},
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_traverse_overridden(self):
|
||||||
|
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())
|
||||||
|
|
||||||
|
self.assertEqual(len(all_providers), 5)
|
||||||
|
self.assertEqual(
|
||||||
|
{
|
||||||
|
provider.provides
|
||||||
|
for provider in all_providers
|
||||||
|
if isinstance(provider, providers.Callable)
|
||||||
|
},
|
||||||
|
{list, dict, tuple, str},
|
||||||
|
)
|
||||||
|
self.assertIn(provider.last_overriding, all_providers)
|
||||||
|
self.assertIs(provider.last_overriding(), container2)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user