Remove mirror input on DjangoFormMutation#1
This commit is contained in:
alejandronunez 2019-03-01 10:13:49 -05:00 committed by GitHub
commit cb2a2f7534
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 2 deletions

View File

@ -103,7 +103,7 @@ class DjangoFormMutation(BaseDjangoFormMutation):
@classmethod
def __init_subclass_with_meta__(
cls, form_class=None, only_fields=(), exclude_fields=(), **options
cls, form_class=None, mirror_input=False, only_fields=(), exclude_fields=(), **options
):
if not form_class:
@ -111,7 +111,10 @@ class DjangoFormMutation(BaseDjangoFormMutation):
form = form_class()
input_fields = fields_for_form(form, only_fields, exclude_fields)
output_fields = fields_for_form(form, only_fields, exclude_fields)
if mirror_input:
output_fields = fields_for_form(form, only_fields, exclude_fields)
else:
output_fields = {}
_meta = DjangoFormMutationOptions(cls)
_meta.form_class = form_class

View File

@ -139,3 +139,36 @@ class ModelFormMutationTests(TestCase):
self.assertEqual(result.errors[0].messages, ["This field is required."])
self.assertIn("age", fields_w_error)
self.assertEqual(result.errors[1].messages, ["This field is required."])
class FormMutationTests(TestCase):
def test_default_meta_fields(self):
class MyMutation(DjangoFormMutation):
class Meta:
form_class = MyForm
self.assertNotIn("text", MyMutation._meta.fields)
def test_mirror_meta_fields(self):
class MyMutation(DjangoFormMutation):
class Meta:
form_class = MyForm
mirror_input = True
self.assertIn("text", MyMutation._meta.fields)
def test_default_input_meta_fields(self):
class MyMutation(DjangoFormMutation):
class Meta:
form_class = MyForm
self.assertIn("client_mutation_id", MyMutation.Input._meta.fields)
self.assertIn("text", MyMutation.Input._meta.fields)
def test_exclude_fields_input_meta_fields(self):
class MyMutation(DjangoFormMutation):
class Meta:
form_class = MyForm
exclude_fields = ['text']
self.assertNotIn("text", MyMutation.Input._meta.fields)
self.assertIn("client_mutation_id", MyMutation.Input._meta.fields)