From afbe6c90b77e628d3e27207893b2f2bb98c4f03d Mon Sep 17 00:00:00 2001 From: Jacob Foster Date: Tue, 18 Jul 2017 14:01:43 -0500 Subject: [PATCH] Add nested model mutation tests --- .../rest_framework/tests/test_mutation.py | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/graphene_django/rest_framework/tests/test_mutation.py b/graphene_django/rest_framework/tests/test_mutation.py index 30ac477..5143f76 100644 --- a/graphene_django/rest_framework/tests/test_mutation.py +++ b/graphene_django/rest_framework/tests/test_mutation.py @@ -1,11 +1,26 @@ +from django.db import models +from graphene import Field +from graphene.types.inputobjecttype import InputObjectType from py.test import raises from rest_framework import serializers +from ...types import DjangoObjectType from ..mutation import SerializerMutation +class MyFakeModel(models.Model): + cool_name = models.CharField(max_length=50) + + +class MyModelSerializer(serializers.ModelSerializer): + class Meta: + model = MyFakeModel + fields = '__all__' + + class MySerializer(serializers.Serializer): text = serializers.CharField() + model = MyModelSerializer() def test_needs_serializer_class(): @@ -22,6 +37,7 @@ def test_has_fields(): serializer_class = MySerializer assert 'text' in MyMutation._meta.fields + assert 'model' in MyMutation._meta.fields assert 'errors' in MyMutation._meta.fields @@ -31,5 +47,24 @@ def test_has_input_fields(): serializer_class = MySerializer assert 'text' in MyMutation.Input._meta.fields + assert 'model' in MyMutation.Input._meta.fields +def test_nested_model(): + + class MyFakeModelGrapheneType(DjangoObjectType): + class Meta: + model = MyFakeModel + + class MyMutation(SerializerMutation): + class Meta: + serializer_class = MySerializer + + model_field = MyMutation._meta.fields['model'] + assert isinstance(model_field, Field) + assert model_field.type == MyFakeModelGrapheneType + + model_input = MyMutation.Input._meta.fields['model'] + model_input_type = model_input._type.of_type + assert issubclass(model_input_type, InputObjectType) + assert 'cool_name' in model_input_type._meta.fields