Add extra tests for asynchronous injections

This commit is contained in:
Roman Mogylatov 2021-01-21 11:28:42 -05:00
parent c16f974517
commit d533ac110a
2 changed files with 46 additions and 0 deletions

View File

@ -13,6 +13,7 @@ follows `Semantic versioning`_
See issue: `#368 <https://github.com/ets-labs/python-dependency-injector/issues/368>`_. See issue: `#368 <https://github.com/ets-labs/python-dependency-injector/issues/368>`_.
Thanks `@kolypto <https://github.com/kolypto>`_ for the bug report. Thanks `@kolypto <https://github.com/kolypto>`_ for the bug report.
- Refactor asynchronous injections. - Refactor asynchronous injections.
- Add extra tests for asynchronous injections.
4.10.3 4.10.3
------ ------

View File

@ -236,6 +236,51 @@ class FactoryTests(AsyncTestCase):
self.assertIsNot(service1.client, service2.client) self.assertIsNot(service1.client, service2.client)
def test_async_instance_and_sync_attributes_injection(self):
class ContainerWithAttributes(containers.DeclarativeContainer):
resource1 = providers.Resource(init_resource, providers.Object(RESOURCE1))
client = providers.Factory(
Client,
resource1,
resource2=None,
)
client.add_attributes(resource2=providers.Object(RESOURCE2))
service = providers.Factory(
Service,
client=None,
)
service.add_attributes(client=client)
container = ContainerWithAttributes()
client1 = self._run(container.client())
client2 = self._run(container.client())
self.assertIsInstance(client1, Client)
self.assertIs(client1.resource1, RESOURCE1)
self.assertIs(client1.resource2, RESOURCE2)
self.assertIsInstance(client2, Client)
self.assertIs(client2.resource1, RESOURCE1)
self.assertIs(client2.resource2, RESOURCE2)
service1 = self._run(container.service())
service2 = self._run(container.service())
self.assertIsInstance(service1, Service)
self.assertIsInstance(service1.client, Client)
self.assertIs(service1.client.resource1, RESOURCE1)
self.assertIs(service1.client.resource2, RESOURCE2)
self.assertIsInstance(service2, Service)
self.assertIsInstance(service2.client, Client)
self.assertIs(service2.client.resource1, RESOURCE1)
self.assertIs(service2.client.resource2, RESOURCE2)
self.assertIsNot(service1.client, service2.client)
class FactoryAggregateTests(AsyncTestCase): class FactoryAggregateTests(AsyncTestCase):