Exemple #1
0
    def test__parent_lookup(self):
        """
        Passes if ...
        """
        container = DIContainer({
            'one': {
                'type': 'mock.Mock',
                'properties': {
                    'from': 'parent'
                }
            }
        })

        context_settings = {
            'two': {
                'type': 'mock.Mock',
                'properties': {
                    'from': 'child'
                }
            }
        }

        with container.context(context_settings):
            self.assertIsNotNone(container.resolve("one"))
            self.assertIsNotNone(container.resolve_type("one"))

        self.assertRaises(MissingConfigurationError, lambda: container.resolve("three"))
        self.assertRaises(MissingConfigurationError, lambda: container.resolve_type("three"))
Exemple #2
0
    def test__child_context(self):
        """
        Passes if ...
        """
        container = DIContainer({
            'one': {
                'type': 'mock.Mock',
                'properties': {
                    'source': 'outer_context',
                    'injected': 'rel:two'
                }
            },
            'two': {
                'type': 'mock.Mock',
                'properties': {
                    'source': 'outer_context'
                }
            }
        })

        context_settings = {
            'one': {
                'type': 'mock.Mock',
                'properties': {
                    'source': 'inner_context',
                    'injected': 'rel:three'
                }
            },
            'three': {
                'type': 'mock.Mock',
                'properties': {
                    'source': 'prelaced_context'
                }
            }
        }

        def inner_func():
            return container.resolve("one")

        tbc = inner_func()
        self.assertEqual(tbc.source, 'outer_context')
        self.assertEqual(tbc.injected.source, 'outer_context')

        with container.context(context_settings):
            context_tbc = inner_func()
            self.assertEqual(context_tbc.source, 'inner_context')
            self.assertEqual(context_tbc.injected.source, 'prelaced_context')

        tbc = inner_func()
        self.assertEqual(tbc.source, 'outer_context')
        self.assertEqual(tbc.injected.source, 'outer_context')