Exemplo n.º 1
0
    def test_if_get_or_default_returns_default_when_no_object_for_given_key(
            self):
        locator = ObjectLocator()

        ret1 = locator.get_or_default(TEST_CLASS_1_NAME, 'default')

        assert isinstance(ret1, str)
        assert ret1 == 'default'
Exemplo n.º 2
0
    def test_if_locator_returns_keys_for_registered_objects(self):
        locator = ObjectLocator()
        locator.register('key', 'value')

        keys = locator.get_keys()

        assert 'key' in keys
        assert len(keys) == 1
Exemplo n.º 3
0
    def test_if_is_registered_returns_true_for_registered_providers(self):
        locator = ObjectLocator()
        test_object = TestClass1()

        locator.register(TEST_CLASS_1_NAME, test_object)

        assert locator.is_key_registered(TEST_CLASS_1_NAME)
        assert not locator.is_key_registered(test_object)
Exemplo n.º 4
0
    def test_if_registering_duplicate_entry_raises_exception(self):
        locator = ObjectLocator()
        test_object = TestClass1()

        locator.register(TEST_CLASS_1_NAME, test_object)

        with pytest.raises(KeyError):
            locator.register(TEST_CLASS_1_NAME, test_object)
Exemplo n.º 5
0
 def __init__(self, name='', locator=None):
     if locator is not None:
         if not isinstance(locator, LocatorBase):
             raise TypeError('locator must be instance of class derived from %s' % LocatorBase.__class__.__name__)
         self._locator = locator
     else:
         self._locator = ObjectLocator()
     self._name = name
Exemplo n.º 6
0
    def test_if_registered_object_is_resolved_by_key(self):
        localtor = ObjectLocator()
        test_object = TestClass1()

        localtor.register(TEST_CLASS_1_NAME, test_object)
        instance = localtor.locate(TEST_CLASS_1_NAME)

        assert instance is not None
        assert test_object is instance
Exemplo n.º 7
0
    def test_if_class_can_be_used_as_key(self):
        locator = ObjectLocator()
        test_object = TestClass1()

        locator.register(TestClass1, test_object)
        instance = locator.locate(TestClass1)

        assert instance is not None
        assert isinstance(instance, TestClass1)
Exemplo n.º 8
0
    def test_registering_function_as_object(self):
        locator = ObjectLocator()
        container_class = self.get_container()
        container = container_class()
        container._locator = locator
        container.register_object(TEST_FUNC_1_NAME, TestFunc1)

        ret1 = container.get(TEST_FUNC_1_NAME)
        assert ret1 is not None
        assert isinstance(ret1, type(TestFunc1))
Exemplo n.º 9
0
    def test_if_get_or_default_returns_registered_object(self):
        locator = ObjectLocator()
        test_object = TestClass1()

        locator.register(TEST_CLASS_1_NAME, test_object)

        ret1 = locator.get_or_default(TEST_CLASS_1_NAME, 'default')

        assert isinstance(ret1, TestClass1)
        assert ret1 is test_object
Exemplo n.º 10
0
    def test_registering_class(self):
        locator = ObjectLocator()
        container_class = self.get_container()
        container = container_class(locator=locator)
        container.register_callable(TEST_CLASS_1_NAME, TestClass1)

        ret1 = locator.is_key_registered(TEST_CLASS_1_NAME)
        assert ret1 is True

        ret2 = container.resolve(TEST_CLASS_1_NAME)
        ret3 = container.resolve(TEST_CLASS_1_NAME)

        assert isinstance(ret2, TestClass1)
        assert ret2 is not ret3
Exemplo n.º 11
0
    def __init__(self, name='', locator=None):
        """
        Raises TypeError when locator object is not derived from LocatorBase class.

        :param name: Name for a container.
        :param locator: Locator instance that will be used for storing objects in the container.
        """
        if locator is not None:
            if not isinstance(locator, LocatorBase):
                raise TypeError(
                    'locator must be instance of class derived from %s' %
                    LocatorBase.__class__.__name__)
            self._locator = locator
        else:
            self._locator = ObjectLocator()
        self._name = name
Exemplo n.º 12
0
    def test_registering_singleton(self):
        locator = ObjectLocator()
        container_class = self.get_container()
        container = container_class()
        container._locator = locator
        container.register_callable(TEST_CLASS_1_NAME,
                                    TestClass1,
                                    lifetime=InstanceLifetime.SingletonLazy)

        ret1 = locator.is_key_registered(TEST_CLASS_1_NAME)
        assert ret1 is True

        ret2 = container.get(TEST_CLASS_1_NAME)
        ret3 = container.get(TEST_CLASS_1_NAME)

        assert isinstance(ret2, TestClass1)
        assert id(ret2) == id(ret3)
Exemplo n.º 13
0
    def test_if_resolving_unregistered_object_raises_exception(self):
        locator = ObjectLocator()

        with pytest.raises(KeyError):
            locator.locate(TEST_CLASS_1_NAME)