Exemple #1
0
    def test_add_annotation_with_no_missing_arguments(self, argument_mock):
        def dummy():
            pass

        builder = types.ArgumentAnnotationHandlerBuilder(dummy, [], False)
        with pytest.raises(types.ExhaustedArguments):
            builder.add_annotation(argument_mock)
Exemple #2
0
 def test_auto_fill_when_not_done(self, request_definition_builder, args):
     request_definition_builder.uri.remaining_variables = args
     builder = types.ArgumentAnnotationHandlerBuilder(None, args, False)
     builder.set_request_definition_builder(request_definition_builder)
     handler = builder.build()
     types_ = map(type, handler.annotations)
     assert list(types_) == ([types.Path] * len(args))
     names = [argument.name for argument in handler.annotations]
     assert names == args
Exemple #3
0
 def test_add_named_annotation_without_name(self, named_argument_mock,
                                            args):
     builder = types.ArgumentAnnotationHandlerBuilder(None, args, False)
     named_argument_mock.name = None
     builder.add_annotation(named_argument_mock)
     named_argument_mock.modify_request_definition.assert_called_with(
         builder.request_definition_builder)
     assert named_argument_mock.name == args[0]
     assert args[0] not in builder.missing_arguments
Exemple #4
0
 def test_add_named_annotation_without_name(self, mocker,
                                            named_argument_mock, args):
     builder = types.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
Exemple #5
0
    def test_add_annotation_with_name_not_recognized(self, argument_mock,
                                                     args):
        def dummy():
            pass

        assert -1 not in args
        builder = types.ArgumentAnnotationHandlerBuilder(dummy, args, False)
        with pytest.raises(types.ArgumentNotFound):
            builder.add_annotation(argument_mock, name=-1)
Exemple #6
0
 def __call__(self, func):
     spec = utils.get_arg_spec(func)
     arg_handler = types.ArgumentAnnotationHandlerBuilder(func, spec.args)
     builder = RequestDefinitionBuilder(
         self._method, URIDefinitionBuilder(self._uri), arg_handler,
         decorators.MethodAnnotationHandlerBuilder())
     arg_handler.add_annotations_from_spec(spec)
     if spec.return_annotation is not None:
         builder = decorators.returns(spec.return_annotation)(builder)
     functools.update_wrapper(builder, func)
     return builder
Exemple #7
0
 def __call__(self, func):
     spec = utils.get_arg_spec(func)
     arg_handler = types.ArgumentAnnotationHandlerBuilder(func, spec.args)
     method_handler = decorators.MethodAnnotationHandlerBuilder()
     builder = RequestDefinitionBuilder(self._method,
                                        URIDefinitionBuilder(self._uri),
                                        arg_handler, method_handler)
     if spec.args:
         # Ignore `self` instance reference
         spec.annotations.pop(spec.args[0], None)
     arg_handler.set_annotations(spec.annotations)
     if spec.return_annotation is not None:
         builder = decorators.returns(spec.return_annotation)(builder)
     functools.update_wrapper(builder, func)
     return builder
Exemple #8
0
 def test_add_annotation_class(self, mocker, argument_mock, args):
     builder = types.ArgumentAnnotationHandlerBuilder(None, args, False)
     builder.listener = mocker.stub()
     argument = builder.add_annotation(type(argument_mock))
     builder.listener.assert_called_with(argument)
     assert args[0] not in builder.missing_arguments
Exemple #9
0
 def test_set_annotations_with_dict(self, argument_mock, args):
     builder = types.ArgumentAnnotationHandlerBuilder(None, args, False)
     builder.set_annotations(**{args[0]: argument_mock})
     argument_mock.modify_request_definition.assert_called_with(
         builder.request_definition_builder)
     assert args[0] not in builder.missing_arguments
Exemple #10
0
 def test_add_annotation_with_name(self, mocker, argument_mock, args):
     builder = types.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
Exemple #11
0
 def test_remaining_args_count(self, args):
     builder = types.ArgumentAnnotationHandlerBuilder(None, args, False)
     assert builder.remaining_args_count == len(args)
Exemple #12
0
 def test_missing_arguments(self, args):
     builder = types.ArgumentAnnotationHandlerBuilder(None, args, False)
     assert list(builder.missing_arguments) == args
Exemple #13
0
 def test_is_done(self, argument_mock):
     builder = types.ArgumentAnnotationHandlerBuilder(
         None, ("arg1", ), False)
     assert not builder.is_done()
     builder.add_annotation(argument_mock)
     assert builder.is_done()
Exemple #14
0
 def test_set_annotations_with_dict(self, mocker, argument_mock, args):
     builder = types.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
Exemple #15
0
 def test_auto_fill_when_not_done_fails(self, request_definition_builder):
     request_definition_builder.uri.remaining_variables = []
     builder = types.ArgumentAnnotationHandlerBuilder(None, ["arg1"], False)
     builder.set_request_definition_builder(request_definition_builder)
     with pytest.raises(types.MissingArgumentAnnotations):
         builder.build()
Exemple #16
0
 def test_add_annotation_class(self, argument_mock, args):
     builder = types.ArgumentAnnotationHandlerBuilder(None, args, False)
     argument = builder.add_annotation(type(argument_mock))
     argument.modify_request_definition.assert_called_with(
         builder.request_definition_builder)
     assert args[0] not in builder.missing_arguments
Exemple #17
0
 def test_add_annotation_with_name(self, argument_mock, args):
     builder = types.ArgumentAnnotationHandlerBuilder(None, args, False)
     builder.add_annotation(argument_mock, name=args[-1])
     argument_mock.modify_request_definition.assert_called_with(
         builder.request_definition_builder)
     assert args[-1] not in builder.missing_arguments