mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-11-04 18:07:44 +03:00 
			
		
		
		
	Add more tests
This commit is contained in:
		
							parent
							
								
									1cd11e4af2
								
							
						
					
					
						commit
						b05816413f
					
				| 
						 | 
				
			
			@ -186,6 +186,52 @@ class DeclarativeContainerInstanceTests(unittest.TestCase):
 | 
			
		|||
        self.assertEqual(container.overridden, tuple())
 | 
			
		||||
        self.assertEqual(container.p11.overridden, tuple())
 | 
			
		||||
 | 
			
		||||
    def test_init_shutdown_resources(self):
 | 
			
		||||
        def _init1():
 | 
			
		||||
            _init1.init_counter += 1
 | 
			
		||||
            yield
 | 
			
		||||
            _init1.shutdown_counter += 1
 | 
			
		||||
 | 
			
		||||
        _init1.init_counter = 0
 | 
			
		||||
        _init1.shutdown_counter = 0
 | 
			
		||||
 | 
			
		||||
        def _init2():
 | 
			
		||||
            _init2.init_counter += 1
 | 
			
		||||
            yield
 | 
			
		||||
            _init2.shutdown_counter += 1
 | 
			
		||||
 | 
			
		||||
        _init2.init_counter = 0
 | 
			
		||||
        _init2.shutdown_counter = 0
 | 
			
		||||
 | 
			
		||||
        class Container(containers.DeclarativeContainer):
 | 
			
		||||
            resource1 = providers.Resource(_init1)
 | 
			
		||||
            resource2 = providers.Resource(_init2)
 | 
			
		||||
 | 
			
		||||
        container = Container()
 | 
			
		||||
        self.assertEqual(_init1.init_counter, 0)
 | 
			
		||||
        self.assertEqual(_init1.shutdown_counter, 0)
 | 
			
		||||
        self.assertEqual(_init2.init_counter, 0)
 | 
			
		||||
        self.assertEqual(_init2.shutdown_counter, 0)
 | 
			
		||||
 | 
			
		||||
        container.init_resources()
 | 
			
		||||
        self.assertEqual(_init1.init_counter, 1)
 | 
			
		||||
        self.assertEqual(_init1.shutdown_counter, 0)
 | 
			
		||||
        self.assertEqual(_init2.init_counter, 1)
 | 
			
		||||
        self.assertEqual(_init2.shutdown_counter, 0)
 | 
			
		||||
 | 
			
		||||
        container.shutdown_resources()
 | 
			
		||||
        self.assertEqual(_init1.init_counter, 1)
 | 
			
		||||
        self.assertEqual(_init1.shutdown_counter, 1)
 | 
			
		||||
        self.assertEqual(_init2.init_counter, 1)
 | 
			
		||||
        self.assertEqual(_init2.shutdown_counter, 1)
 | 
			
		||||
 | 
			
		||||
        container.init_resources()
 | 
			
		||||
        container.shutdown_resources()
 | 
			
		||||
        self.assertEqual(_init1.init_counter, 2)
 | 
			
		||||
        self.assertEqual(_init1.shutdown_counter, 2)
 | 
			
		||||
        self.assertEqual(_init2.init_counter, 2)
 | 
			
		||||
        self.assertEqual(_init2.shutdown_counter, 2)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    unittest.main()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,7 +4,7 @@ import sys
 | 
			
		|||
 | 
			
		||||
import unittest2 as unittest
 | 
			
		||||
 | 
			
		||||
from dependency_injector import providers, resources, errors
 | 
			
		||||
from dependency_injector import containers, providers, resources, errors
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def init_fn(*args, **kwargs):
 | 
			
		||||
| 
						 | 
				
			
			@ -20,20 +20,30 @@ class ResourceTests(unittest.TestCase):
 | 
			
		|||
        provider = providers.Resource(init_fn)
 | 
			
		||||
        self.assertIsInstance(provider.provided, providers.ProvidedInstance)
 | 
			
		||||
 | 
			
		||||
    # Initialization and shutdown
 | 
			
		||||
    # Injection
 | 
			
		||||
    # + Initializer: function
 | 
			
		||||
    # + Initializer: generator
 | 
			
		||||
    # + Initializer: base class
 | 
			
		||||
    # + Initializer: unknown type
 | 
			
		||||
    # + Init() and shutdown() methods
 | 
			
		||||
    # + Initialized
 | 
			
		||||
    # + Args
 | 
			
		||||
    # + Kwargs
 | 
			
		||||
    # + Overridden
 | 
			
		||||
    # + Deepcopy
 | 
			
		||||
    # + Deepcopy initialized
 | 
			
		||||
    # + Repr
 | 
			
		||||
    def test_injection(self):
 | 
			
		||||
        resource = object()
 | 
			
		||||
 | 
			
		||||
        def _init():
 | 
			
		||||
            _init.counter += 1
 | 
			
		||||
            return resource
 | 
			
		||||
        _init.counter = 0
 | 
			
		||||
 | 
			
		||||
        class Container(containers.DeclarativeContainer):
 | 
			
		||||
            resource = providers.Resource(_init)
 | 
			
		||||
            dependency1 = providers.List(resource)
 | 
			
		||||
            dependency2 = providers.List(resource)
 | 
			
		||||
 | 
			
		||||
        container = Container()
 | 
			
		||||
        list1 = container.dependency1()
 | 
			
		||||
        list2 = container.dependency2()
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(list1, [resource])
 | 
			
		||||
        self.assertIs(list1[0], resource)
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(list2, [resource])
 | 
			
		||||
        self.assertIs(list2[0], resource)
 | 
			
		||||
 | 
			
		||||
        self.assertEqual(_init.counter, 1)
 | 
			
		||||
 | 
			
		||||
    def test_init_function(self):
 | 
			
		||||
        def _init():
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user