Migrate container custom string attribute name tests

This commit is contained in:
Roman Mogylatov 2021-10-14 19:26:51 -04:00
parent c48e150912
commit f62015a083
2 changed files with 47 additions and 40 deletions

View File

@ -0,0 +1,47 @@
"""Tests for container with custom string classes as attribute names.
See: https://github.com/ets-labs/python-dependency-injector/issues/479
"""
from dependency_injector import containers, providers
from pytest import fixture, raises
class CustomString(str):
pass
class CustomClass:
thing = None
@fixture
def container():
return containers.DynamicContainer()
@fixture
def provider():
return providers.Provider()
def test_setattr(container: containers.DynamicContainer, provider: providers.Provider):
setattr(container, CustomString("test_attr"), provider)
assert container.test_attr is provider
def test_delattr(container: containers.DynamicContainer, provider: providers.Provider):
setattr(container, CustomString("test_attr"), provider)
delattr(container, CustomString("test_attr"))
with raises(AttributeError):
container.test_attr
def test_set_provider(container: containers.DynamicContainer, provider: providers.Provider):
container.set_provider(CustomString("test_attr"), provider)
assert container.test_attr is provider
def test_set_providers(container: containers.DynamicContainer, provider: providers.Provider):
container.set_providers(**{CustomString("test_attr"): provider})
assert container.test_attr is provider

View File

@ -1,40 +0,0 @@
"""Dependency injector dynamic container unit tests."""
import unittest
from dependency_injector import (
containers,
providers,
)
class DynamicContainerWithCustomStringTests(unittest.TestCase):
# See: https://github.com/ets-labs/python-dependency-injector/issues/479
class CustomString(str):
pass
class CustomClass:
thing = None
def setUp(self):
self.container = containers.DynamicContainer()
self.provider = providers.Provider()
def test_setattr(self):
setattr(self.container, self.CustomString("test_attr"), self.provider)
self.assertIs(self.container.test_attr, self.provider)
def test_delattr(self):
setattr(self.container, self.CustomString("test_attr"), self.provider)
delattr(self.container, self.CustomString("test_attr"))
with self.assertRaises(AttributeError):
self.container.test_attr
def test_set_provider(self):
self.container.set_provider(self.CustomString("test_attr"), self.provider)
self.assertIs(self.container.test_attr, self.provider)
def test_set_providers(self):
self.container.set_providers(**{self.CustomString("test_attr"): self.provider})
self.assertIs(self.container.test_attr, self.provider)