Exemple #1
0
def test_resolve_arguments_fails():
    def func(a: int):
        pass

    arg_name = 'a'
    method = ComponentMethod(func)
    arguments_resolver = ArgumentsResolver()

    # Assert
    with pytest.raises(ArgumentNotSupported, match=f'Unable to resolve argument {arg_name}: int'):
        # Act
        arguments_resolver.resolve_arguments(method, request=Mock(), response_headers={})
Exemple #2
0
def test_resolve_arguments_returns_empty_dict_for_empty_arguments():
    def func():
        pass

    expected_resolved_arguments = {}
    method = ComponentMethod(func)
    arguments_resolver = ArgumentsResolver()

    # Act
    resolved_arguments = arguments_resolver.resolve_arguments(method, request=Mock(), response_headers={})

    # Assert
    assert resolved_arguments == expected_resolved_arguments
Exemple #3
0
def test_resolve_arguments_resolves_argument_with_the_first_resolver():
    def func(a: int):
        pass

    expected_resolved_value = 1
    expected_resolved_arguments = {
        'a': expected_resolved_value,
    }
    method = ComponentMethod(func)
    arguments_resolver = ArgumentsResolver()
    resolver = Mock()
    resolver.is_supported.return_value = True
    resolver.resolve_argument.return_value = expected_resolved_value
    arguments_resolver.add_argument_resolver(resolver)

    # Act
    resolved_arguments = arguments_resolver.resolve_arguments(method, request=Mock(), response_headers={})

    # Assert
    assert resolved_arguments == expected_resolved_arguments
def test_resolve_arguments_resolves_argument_with_the_second_resolver():
    def func(a: int):
        pass

    expected_resolved_value = 1
    expected_resolved_arguments = {
        'a': expected_resolved_value,
    }
    method = ComponentMethod(func)
    arguments_resolver = ArgumentsResolver()
    resolver1 = Mock()
    resolver1.is_supported.return_value = False
    arguments_resolver.add_argument_resolver(resolver1)
    resolver2 = Mock()
    resolver2.is_supported.return_value = True
    resolver2.resolve_argument.return_value = expected_resolved_value
    arguments_resolver.add_argument_resolver(resolver2)

    # Act
    resolved_arguments = arguments_resolver.resolve_arguments(
        method, http_request=Mock())

    # Assert
    assert resolved_arguments == expected_resolved_arguments
def test_arguments_resolver_is_supported_true():
    def func(self, argument: int):
        return None

    def resolve_argument(argument: ComponentMethodArgument, http_request):
        return argument.type_

    arguments_resolver = ArgumentsResolver()
    resolver = GenericArgumentResolver(
        arg_name='argument',
        arg_type=int,
        resolve_argument=resolve_argument,
    )
    arguments_resolver.add_argument_resolver(resolver)
    method = ComponentMethod(func)
    argument = method.get_argument('argument')
    request = get_request()

    # Assert
    assert arguments_resolver.is_supported(argument)
    assert arguments_resolver.resolve_argument(argument,
                                               request) == argument.type_