def test_add_annotation_with_no_missing_arguments(self, argument_mock):
        def dummy():
            pass

        builder = arguments.ArgumentAnnotationHandlerBuilder(dummy, [], False)
        with pytest.raises(arguments.ExhaustedArguments):
            builder.add_annotation(argument_mock)
    def test_add_annotation_that_is_not_an_annotation(self):
        def dummy():
            pass

        builder = arguments.ArgumentAnnotationHandlerBuilder(
            dummy, ["arg1"], False)
        builder.add_annotation(type, "arg1")
        assert builder.remaining_args_count == 1
 def test_add_named_annotation_without_name(self, mocker,
                                            named_argument_mock, args):
     builder = arguments.ArgumentAnnotationHandlerBuilder(None, args, False)
     named_argument_mock.name = None
     builder.listener = mocker.stub()
     builder.add_annotation(named_argument_mock)
     builder.listener.assert_called_with(named_argument_mock)
     assert named_argument_mock.name == args[0]
     assert args[0] not in builder.missing_arguments
    def test_add_annotation_with_name_not_recognized(self, argument_mock,
                                                     args):
        def dummy():
            pass

        assert -1 not in args
        builder = arguments.ArgumentAnnotationHandlerBuilder(
            dummy, args, False)
        with pytest.raises(arguments.ArgumentNotFound):
            builder.add_annotation(argument_mock, name=-1)
Exemplo n.º 5
0
    def __call__(self, func):
        spec = utils.get_arg_spec(func)
        arg_handler = arguments.ArgumentAnnotationHandlerBuilder(
            func, spec.args)
        builder = RequestDefinitionBuilder(
            self._method,
            URIDefinitionBuilder(self._uri),
            arg_handler,
            decorators.MethodAnnotationHandlerBuilder(),
        )

        # Need to add the annotations after constructing the request
        # definition builder so it has a chance to attach its listener.
        arg_handler.set_annotations(spec.annotations)

        # Use return value type hint as expected return type
        if spec.return_annotation is not None:
            builder = returns.schema(spec.return_annotation)(builder)
        functools.update_wrapper(builder, func)
        builder = self._add_args(builder)
        return builder
 def test_add_annotation_with_name(self, mocker, argument_mock, args):
     builder = arguments.ArgumentAnnotationHandlerBuilder(None, args, False)
     builder.listener = mocker.stub()
     builder.add_annotation(argument_mock, name=args[-1])
     builder.listener.assert_called_with(argument_mock)
     assert args[-1] not in builder.missing_arguments
 def test_remaining_args_count(self, args):
     builder = arguments.ArgumentAnnotationHandlerBuilder(None, args, False)
     assert builder.remaining_args_count == len(args)
 def test_missing_arguments(self, args):
     builder = arguments.ArgumentAnnotationHandlerBuilder(None, args, False)
     assert list(builder.missing_arguments) == args
 def test_is_done(self, argument_mock):
     builder = arguments.ArgumentAnnotationHandlerBuilder(
         None, ("arg1", ), False)
     assert not builder.is_done()
     builder.add_annotation(argument_mock)
     assert builder.is_done()
Exemplo n.º 10
0
 def test_set_annotations_with_dict(self, mocker, argument_mock, args):
     builder = arguments.ArgumentAnnotationHandlerBuilder(None, args, False)
     builder.listener = mocker.stub()
     builder.set_annotations(**{args[0]: argument_mock})
     builder.listener.assert_called_with(argument_mock)
     assert args[0] not in builder.missing_arguments
Exemplo n.º 11
0
 def test_add_annotation_class(self, mocker, args):
     builder = arguments.ArgumentAnnotationHandlerBuilder(None, args, False)
     builder.listener = mocker.stub()
     argument = builder.add_annotation(arguments.ArgumentAnnotation())
     builder.listener.assert_called_with(argument)
     assert args[0] not in builder.missing_arguments