Skip to content

Commit d46d8e8

Browse files
committed
Allow mutations to be required. Improved testing. Fixed #694
1 parent 562cafc commit d46d8e8

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

graphene/types/mutation.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,17 @@ def __init_subclass_with_meta__(cls, resolver=None, output=None, arguments=None,
7373
_meta.resolver = resolver
7474
_meta.arguments = arguments
7575

76-
super(Mutation, cls).__init_subclass_with_meta__(_meta=_meta, **options)
76+
super(Mutation, cls).__init_subclass_with_meta__(
77+
_meta=_meta, **options)
7778

7879
@classmethod
79-
def Field(cls, name=None, description=None, deprecation_reason=None):
80+
def Field(cls, name=None, description=None, deprecation_reason=None, required=False):
8081
return Field(
8182
cls._meta.output,
8283
args=cls._meta.arguments,
8384
resolver=cls._meta.resolver,
8485
name=name,
8586
description=description,
8687
deprecation_reason=deprecation_reason,
88+
required=required,
8789
)

graphene/types/tests/test_mutation.py

+25
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from ..objecttype import ObjectType
77
from ..scalars import String
88
from ..schema import Schema
9+
from ..structures import NonNull
910

1011

1112
def test_generate_mutation_no_args():
@@ -133,3 +134,27 @@ class MyMutation(ObjectType):
133134
'name': None,
134135
}
135136
}
137+
138+
139+
def test_mutation_allow_to_have_custom_args():
140+
class CreateUser(Mutation):
141+
142+
class Arguments:
143+
name = String()
144+
145+
name = String()
146+
147+
def mutate(self, info, name):
148+
return CreateUser(name=name)
149+
150+
class MyMutation(ObjectType):
151+
create_user = CreateUser.Field(
152+
description='Create a user',
153+
deprecation_reason='Is deprecated',
154+
required=True
155+
)
156+
157+
field = MyMutation._meta.fields['create_user']
158+
assert field.description == 'Create a user'
159+
assert field.deprecation_reason == 'Is deprecated'
160+
assert field.type == NonNull(CreateUser)

0 commit comments

Comments
 (0)