diff --git a/graphene/types/mutation.py b/graphene/types/mutation.py index fe15f6a2..6b864e07 100644 --- a/graphene/types/mutation.py +++ b/graphene/types/mutation.py @@ -73,10 +73,11 @@ class Mutation(ObjectType): _meta.resolver = resolver _meta.arguments = arguments - super(Mutation, cls).__init_subclass_with_meta__(_meta=_meta, **options) + super(Mutation, cls).__init_subclass_with_meta__( + _meta=_meta, **options) @classmethod - def Field(cls, name=None, description=None, deprecation_reason=None): + def Field(cls, name=None, description=None, deprecation_reason=None, required=False): return Field( cls._meta.output, args=cls._meta.arguments, @@ -84,4 +85,5 @@ class Mutation(ObjectType): name=name, description=description, deprecation_reason=deprecation_reason, + required=required, ) diff --git a/graphene/types/tests/test_mutation.py b/graphene/types/tests/test_mutation.py index 91ab14d2..df17477d 100644 --- a/graphene/types/tests/test_mutation.py +++ b/graphene/types/tests/test_mutation.py @@ -6,6 +6,7 @@ from ..mutation import Mutation from ..objecttype import ObjectType from ..scalars import String from ..schema import Schema +from ..structures import NonNull def test_generate_mutation_no_args(): @@ -133,3 +134,27 @@ def test_mutation_no_fields_output(): 'name': None, } } + + +def test_mutation_allow_to_have_custom_args(): + class CreateUser(Mutation): + + class Arguments: + name = String() + + name = String() + + def mutate(self, info, name): + return CreateUser(name=name) + + class MyMutation(ObjectType): + create_user = CreateUser.Field( + description='Create a user', + deprecation_reason='Is deprecated', + required=True + ) + + field = MyMutation._meta.fields['create_user'] + assert field.description == 'Create a user' + assert field.deprecation_reason == 'Is deprecated' + assert field.type == NonNull(CreateUser)