def test_parameter():
    def test(number: int) -> int:  # pragma: no cover
        pass

    method = ComponentMethod(test)
    argument = method.get_argument('number')
    parameter = argument.parameter
    assert parameter.name == 'number'
    assert parameter.annotation == int
    assert parameter.kind == parameter.POSITIONAL_OR_KEYWORD
def test_default():
    def test(number: int) -> int:  # pragma: no cover
        pass

    method = ComponentMethod(test)
    argument = method.get_argument('number')

    with pytest.raises(ArgumentDoesNotHaveDefault) as exception:
        argument.get_default()

    assert str(exception.value) == f'{argument} does not have get_default'
Ejemplo n.º 3
0
def test_is_supported_in_page_position_argument_resolver(
        argument_type, expected_is_supported):
    def func(arg1: argument_type):  # pragma: no cover
        return arg1

    method = ComponentMethod(func)
    argument = method.get_argument('arg1')
    resolver = PagePositionArgumentResolver()

    # Act
    is_supported = resolver.is_supported(argument)

    # Assert
    assert is_supported == expected_is_supported, argument.type_
Ejemplo n.º 4
0
def test_resolve_argument_fails_in_page_position_argument_resolver(
        query_string, exception_type, message):
    def func(arg1: int):
        return arg1

    method = ComponentMethod(func)
    argument = method.get_argument('arg1')

    request = Mock(spec=DRFRequest)
    request.query_params = QueryDict(query_string)
    resolver = PagePositionArgumentResolver()

    # Assert
    with pytest.raises(exception_type) as exception_info:
        # Act
        resolver.resolve_argument(argument, request)

    assert exception_info.value.args[0] == message
Ejemplo n.º 5
0
def test_resolve_argument_ok_in_page_position_argument_resolver(
        query_string, expected_page_position):
    def func(arg1: int):
        return arg1

    method = ComponentMethod(func)
    argument = method.get_argument('arg1')

    resolver = PagePositionArgumentResolver()

    request = Mock(spec=DRFRequest)
    request.query_params = QueryDict(query_string)

    # Act
    page_position = resolver.resolve_argument(argument, request)

    # Assert
    assert page_position == expected_page_position
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_