Esempio n. 1
0
    def test__inject__with_no_matches_for_dependency_when_non_optional(
        self,
        get_dependency_name_mock,
        get_dependency_registry_type_mock,
        get_namespace_injectables_mock,
        filter_by_group_mock,
        resolve_single_injectable_mock,
    ):
        # given
        matches = {}
        dependency_name = "TEST"
        get_dependency_name_mock.return_value = dependency_name
        registry_type = RegistryType.CLASS
        get_dependency_registry_type_mock.return_value = registry_type
        get_namespace_injectables_mock.return_value = matches
        dependency = "TEST"

        # when
        with pytest.raises(InjectionError):
            inject(dependency)

        # then
        assert get_namespace_injectables_mock.called is True
        assert filter_by_group_mock.called is False
        assert resolve_single_injectable_mock.called is False
Esempio n. 2
0
    def test_this_second_thing(self):

        load_injection_container("../")
        test_vehicle: Vehicle = inject("bicycle")
        test_vehicle.forward()

        test_vehicle: Vehicle = inject("car")
        test_vehicle.forward()
Esempio n. 3
0
    def test__inject__with_no_matches_for_group_when_non_optional(
        self,
        get_namespace_injectables_mock,
        filter_by_group_mock,
        resolve_single_injectable_mock,
    ):
        # given
        matches = {MagicMock(spec=Injectable)}
        lookup_key = "TEST"
        lookup_type = "class"
        get_namespace_injectables_mock.return_value = [
            matches, lookup_key, lookup_type
        ]
        filter_by_group_mock.return_value = {}
        dependency = "TEST"

        # when
        with pytest.raises(InjectionError):
            inject(dependency, group="TEST_GROUP")

        # then
        assert get_namespace_injectables_mock.called is True
        assert filter_by_group_mock.called is True
        assert resolve_single_injectable_mock.called is False
Esempio n. 4
0
    def test__inject__with_default_values(
        self,
        get_dependency_name_mock,
        get_dependency_registry_type_mock,
        get_namespace_injectables_mock,
        filter_by_group_mock,
        resolve_single_injectable_mock,
    ):
        # given
        expected_instance = MagicMock
        injectable = MagicMock(spec=Injectable)
        injectable.get_instance.return_value = expected_instance
        matches = {injectable}
        dependency_name = "TEST"
        get_dependency_name_mock.return_value = dependency_name
        registry_type = RegistryType.CLASS
        get_dependency_registry_type_mock.return_value = registry_type
        get_namespace_injectables_mock.return_value = matches
        resolve_single_injectable_mock.return_value = injectable
        dependency = "TEST"

        # when
        instance = inject(dependency)

        # then
        assert get_namespace_injectables_mock.called is True
        (
            dependency_name_arg,
            registry_type_arg,
            namespace_arg,
        ) = get_namespace_injectables_mock.call_args[0]
        assert dependency_name_arg is dependency_name
        assert registry_type_arg is registry_type
        assert namespace_arg is DEFAULT_NAMESPACE
        assert filter_by_group_mock.called is False
        assert resolve_single_injectable_mock.called is True
        (
            dependency_name_arg,
            registry_type_arg,
            matches_arg,
        ) = resolve_single_injectable_mock.call_args[0]
        assert dependency_name_arg == dependency_name
        assert registry_type_arg == registry_type
        assert matches_arg == matches
        assert injectable.get_instance.called is True
        assert injectable.get_instance.call_args[1]["lazy"] is False
        assert instance == expected_instance
Esempio n. 5
0
 def __init__(self, ):
     self.primary_basic_service = inject(SampleService)
     self.all_basic_service_implementations = inject_multiple(SampleService)
Esempio n. 6
0
 def __init__(self):
     self.repository: StatefulRepository = inject(StatefulRepository)
Esempio n. 7
0
from injectable import load_injection_container, inject

from injectables.factory.vehicle_interface import Vehicle
from injectables.full_example.car import Car

load_injection_container()

test_vehicle: Vehicle = inject("bicycle")
test_vehicle.forward()

test_vehicle: Vehicle = inject("car")
test_vehicle.forward()







Esempio n. 8
0
def foo():
    mocked_injectable = Injectable(lambda: object())
    register_injectables({mocked_injectable}, object)
    assert inject(object)
Esempio n. 9
0
def test_move_forward():
    test_vehicle: Vehicle = inject("car")
    test_vehicle.forward()
Esempio n. 10
0
    def test__inject__with_explicit_values(
        self,
        get_dependency_name_mock,
        get_dependency_registry_type_mock,
        get_namespace_injectables_mock,
        filter_by_group_mock,
        resolve_single_injectable_mock,
    ):
        # given
        expected_instance = MagicMock
        primary_injectable = MagicMock(spec=Injectable)
        primary_injectable.get_instance.return_value = expected_instance
        non_primary_injectable = MagicMock(spec=Injectable)
        matches = {
            primary_injectable,
            non_primary_injectable,
            MagicMock(spec=Injectable),
        }
        dependency_name = "TEST"
        get_dependency_name_mock.return_value = dependency_name
        registry_type = RegistryType.CLASS
        get_dependency_registry_type_mock.return_value = registry_type
        get_namespace_injectables_mock.return_value = matches
        filtered_matches = {primary_injectable, non_primary_injectable}
        filter_by_group_mock.return_value = filtered_matches
        resolve_single_injectable_mock.return_value = primary_injectable
        dependency = "TEST"
        namespace = "TEST_NAMESPACE"
        group = "TEST_GROUP"
        exclude_groups = ["A", "B"]

        # when
        instance = inject(
            dependency,
            namespace=namespace,
            group=group,
            exclude_groups=exclude_groups,
            lazy=True,
            optional=False,
        )

        # then
        assert get_namespace_injectables_mock.called is True
        (
            dependency_name_arg,
            registry_type_arg,
            namespace_arg,
        ) = get_namespace_injectables_mock.call_args[0]
        assert dependency_name_arg is dependency_name
        assert registry_type_arg is registry_type
        assert namespace_arg is namespace
        assert filter_by_group_mock.called is True
        matches_arg, group_arg, exclude_groups_arg = filter_by_group_mock.call_args[
            0]
        assert matches_arg == matches
        assert group_arg == group
        assert exclude_groups_arg == exclude_groups
        assert resolve_single_injectable_mock.called is True
        (
            dependency_name_arg,
            registry_type_arg,
            matches_arg,
        ) = resolve_single_injectable_mock.call_args[0]
        assert dependency_name_arg == dependency_name
        assert registry_type_arg == registry_type
        assert matches_arg == filtered_matches
        assert primary_injectable.get_instance.called is True
        assert non_primary_injectable.get_instance.called is False
        assert primary_injectable.get_instance.call_args[1]["lazy"] is True
        assert instance == expected_instance