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
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()
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
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
def __init__(self, ): self.primary_basic_service = inject(SampleService) self.all_basic_service_implementations = inject_multiple(SampleService)
def __init__(self): self.repository: StatefulRepository = inject(StatefulRepository)
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()
def foo(): mocked_injectable = Injectable(lambda: object()) register_injectables({mocked_injectable}, object) assert inject(object)
def test_move_forward(): test_vehicle: Vehicle = inject("car") test_vehicle.forward()
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