Allow mutations to be required. Improved testing. Fixed #694

This commit is contained in:
Syrus Akbary 2018-03-21 21:31:56 -07:00
parent 562cafc14f
commit d46d8e8c33
2 changed files with 29 additions and 2 deletions

View File

@ -73,10 +73,11 @@ class Mutation(ObjectType):
_meta.resolver = resolver _meta.resolver = resolver
_meta.arguments = arguments _meta.arguments = arguments
super(Mutation, cls).__init_subclass_with_meta__(_meta=_meta, **options) super(Mutation, cls).__init_subclass_with_meta__(
_meta=_meta, **options)
@classmethod @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( return Field(
cls._meta.output, cls._meta.output,
args=cls._meta.arguments, args=cls._meta.arguments,
@ -84,4 +85,5 @@ class Mutation(ObjectType):
name=name, name=name,
description=description, description=description,
deprecation_reason=deprecation_reason, deprecation_reason=deprecation_reason,
required=required,
) )

View File

@ -6,6 +6,7 @@ from ..mutation import Mutation
from ..objecttype import ObjectType from ..objecttype import ObjectType
from ..scalars import String from ..scalars import String
from ..schema import Schema from ..schema import Schema
from ..structures import NonNull
def test_generate_mutation_no_args(): def test_generate_mutation_no_args():
@ -133,3 +134,27 @@ def test_mutation_no_fields_output():
'name': None, '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)