Skip to content

Commit afbe6c9

Browse files
author
Jacob Foster
committed
Add nested model mutation tests
1 parent 81a6dff commit afbe6c9

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

graphene_django/rest_framework/tests/test_mutation.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,26 @@
1+
from django.db import models
2+
from graphene import Field
3+
from graphene.types.inputobjecttype import InputObjectType
14
from py.test import raises
25
from rest_framework import serializers
36

7+
from ...types import DjangoObjectType
48
from ..mutation import SerializerMutation
59

610

11+
class MyFakeModel(models.Model):
12+
cool_name = models.CharField(max_length=50)
13+
14+
15+
class MyModelSerializer(serializers.ModelSerializer):
16+
class Meta:
17+
model = MyFakeModel
18+
fields = '__all__'
19+
20+
721
class MySerializer(serializers.Serializer):
822
text = serializers.CharField()
23+
model = MyModelSerializer()
924

1025

1126
def test_needs_serializer_class():
@@ -22,6 +37,7 @@ class Meta:
2237
serializer_class = MySerializer
2338

2439
assert 'text' in MyMutation._meta.fields
40+
assert 'model' in MyMutation._meta.fields
2541
assert 'errors' in MyMutation._meta.fields
2642

2743

@@ -31,5 +47,24 @@ class Meta:
3147
serializer_class = MySerializer
3248

3349
assert 'text' in MyMutation.Input._meta.fields
50+
assert 'model' in MyMutation.Input._meta.fields
51+
52+
53+
def test_nested_model():
54+
55+
class MyFakeModelGrapheneType(DjangoObjectType):
56+
class Meta:
57+
model = MyFakeModel
58+
59+
class MyMutation(SerializerMutation):
60+
class Meta:
61+
serializer_class = MySerializer
3462

63+
model_field = MyMutation._meta.fields['model']
64+
assert isinstance(model_field, Field)
65+
assert model_field.type == MyFakeModelGrapheneType
3566

67+
model_input = MyMutation.Input._meta.fields['model']
68+
model_input_type = model_input._type.of_type
69+
assert issubclass(model_input_type, InputObjectType)
70+
assert 'cool_name' in model_input_type._meta.fields

0 commit comments

Comments
 (0)