Add tests + refactoring

This commit is contained in:
Roman Mogylatov 2020-10-23 20:12:26 -04:00
parent 2d3aa72cbd
commit 1cd11e4af2
3 changed files with 1812 additions and 1747 deletions

File diff suppressed because it is too large Load Diff

View File

@ -2504,7 +2504,7 @@ cdef class Dict(Provider):
:rtype: str :rtype: str
""" """
return represent_provider(provider=self, provides=dict(self.kwargs)) return represent_provider(provider=self, provides=self.kwargs)
@property @property
def kwargs(self): def kwargs(self):
@ -2706,7 +2706,7 @@ cdef class Resource(Provider):
if self.__initialized: if self.__initialized:
return self.__resource return self.__resource
if _is_resource_subclass(self.__initializer): if self._is_resource_subclass(self.__initializer):
initializer = self.__initializer() initializer = self.__initializer()
self.__resource = __call( self.__resource = __call(
initializer.init, initializer.init,
@ -2746,6 +2746,15 @@ cdef class Resource(Provider):
self.__initialized = True self.__initialized = True
return self.__resource return self.__resource
@staticmethod
def _is_resource_subclass(instance):
if sys.version_info < (3, 5):
return False
if not isinstance(instance, CLASS_TYPES):
return
from . import resources
return issubclass(instance, resources.Resource)
cdef class Container(Provider): cdef class Container(Provider):
"""Container provider provides an instance of declarative container. """Container provider provides an instance of declarative container.
@ -3357,12 +3366,3 @@ def merge_dicts(dict1, dict2):
result = dict1.copy() result = dict1.copy()
result.update(dict2) result.update(dict2)
return result return result
def _is_resource_subclass(instance):
if sys.version_info < (3, 5):
return False
if not isinstance(instance, CLASS_TYPES):
return
from . import resources
return issubclass(instance, resources.Resource)

View File

@ -25,7 +25,7 @@ class ResourceTests(unittest.TestCase):
# + Initializer: function # + Initializer: function
# + Initializer: generator # + Initializer: generator
# + Initializer: base class # + Initializer: base class
# - Initializer: unknown type # + Initializer: unknown type
# + Init() and shutdown() methods # + Init() and shutdown() methods
# + Initialized # + Initialized
# + Args # + Args
@ -112,6 +112,11 @@ class ResourceTests(unittest.TestCase):
self.assertEqual(TestResource.init_counter, 2) self.assertEqual(TestResource.init_counter, 2)
self.assertEqual(TestResource.shutdown_counter, 2) self.assertEqual(TestResource.shutdown_counter, 2)
def test_init_not_callable(self):
provider = providers.Resource(1)
with self.assertRaises(errors.Error):
provider.init()
def test_init_and_shutdown(self): def test_init_and_shutdown(self):
def _init(): def _init():
_init.init_counter += 1 _init.init_counter += 1