mirror of
https://github.com/graphql-python/graphene-django.git
synced 2024-11-23 01:57:08 +03:00
Merge pull request #323 from pizzapanther/master
fixes #322, fixed incorrect serializer instance usage
This commit is contained in:
commit
b19308b1c2
|
@ -8,6 +8,7 @@ SECRET_KEY = 1
|
||||||
|
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
'graphene_django',
|
'graphene_django',
|
||||||
|
'graphene_django.rest_framework',
|
||||||
'graphene_django.tests',
|
'graphene_django.tests',
|
||||||
'starwars',
|
'starwars',
|
||||||
]
|
]
|
||||||
|
|
6
graphene_django/rest_framework/models.py
Normal file
6
graphene_django/rest_framework/models.py
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
class MyFakeModel(models.Model):
|
||||||
|
cool_name = models.CharField(max_length=50)
|
||||||
|
created = models.DateTimeField(auto_now_add=True)
|
|
@ -84,4 +84,9 @@ class SerializerMutation(ClientIDMutation):
|
||||||
@classmethod
|
@classmethod
|
||||||
def perform_mutate(cls, serializer, info):
|
def perform_mutate(cls, serializer, info):
|
||||||
obj = serializer.save()
|
obj = serializer.save()
|
||||||
return cls(errors=None, **obj)
|
|
||||||
|
kwargs = {}
|
||||||
|
for f, field in serializer.fields.items():
|
||||||
|
kwargs[f] = field.get_attribute(obj)
|
||||||
|
|
||||||
|
return cls(errors=None, **kwargs)
|
||||||
|
|
|
@ -1,17 +1,16 @@
|
||||||
from django.db import models
|
import datetime
|
||||||
|
|
||||||
from graphene import Field
|
from graphene import Field
|
||||||
from graphene.types.inputobjecttype import InputObjectType
|
from graphene.types.inputobjecttype import InputObjectType
|
||||||
from py.test import raises
|
from py.test import raises
|
||||||
|
from py.test import mark
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from ...types import DjangoObjectType
|
from ...types import DjangoObjectType
|
||||||
|
from ..models import MyFakeModel
|
||||||
from ..mutation import SerializerMutation
|
from ..mutation import SerializerMutation
|
||||||
|
|
||||||
|
|
||||||
class MyFakeModel(models.Model):
|
|
||||||
cool_name = models.CharField(max_length=50)
|
|
||||||
|
|
||||||
|
|
||||||
class MyModelSerializer(serializers.ModelSerializer):
|
class MyModelSerializer(serializers.ModelSerializer):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MyFakeModel
|
model = MyFakeModel
|
||||||
|
@ -71,6 +70,7 @@ def test_nested_model():
|
||||||
model_input_type = model_input._type.of_type
|
model_input_type = model_input._type.of_type
|
||||||
assert issubclass(model_input_type, InputObjectType)
|
assert issubclass(model_input_type, InputObjectType)
|
||||||
assert 'cool_name' in model_input_type._meta.fields
|
assert 'cool_name' in model_input_type._meta.fields
|
||||||
|
assert 'created' in model_input_type._meta.fields
|
||||||
|
|
||||||
|
|
||||||
def test_mutate_and_get_payload_success():
|
def test_mutate_and_get_payload_success():
|
||||||
|
@ -88,6 +88,19 @@ def test_mutate_and_get_payload_success():
|
||||||
assert result.errors is None
|
assert result.errors is None
|
||||||
|
|
||||||
|
|
||||||
|
@mark.django_db
|
||||||
|
def test_model_mutate_and_get_payload_success():
|
||||||
|
class MyMutation(SerializerMutation):
|
||||||
|
class Meta:
|
||||||
|
serializer_class = MyModelSerializer
|
||||||
|
|
||||||
|
result = MyMutation.mutate_and_get_payload(None, None, **{
|
||||||
|
'cool_name': 'Narf',
|
||||||
|
})
|
||||||
|
assert result.errors is None
|
||||||
|
assert result.cool_name == 'Narf'
|
||||||
|
assert isinstance(result.created, datetime.datetime)
|
||||||
|
|
||||||
def test_mutate_and_get_payload_error():
|
def test_mutate_and_get_payload_error():
|
||||||
|
|
||||||
class MyMutation(SerializerMutation):
|
class MyMutation(SerializerMutation):
|
||||||
|
@ -96,4 +109,14 @@ def test_mutate_and_get_payload_error():
|
||||||
|
|
||||||
# missing required fields
|
# missing required fields
|
||||||
result = MyMutation.mutate_and_get_payload(None, None, **{})
|
result = MyMutation.mutate_and_get_payload(None, None, **{})
|
||||||
assert len(result.errors) > 0
|
assert len(result.errors) > 0
|
||||||
|
|
||||||
|
def test_model_mutate_and_get_payload_error():
|
||||||
|
|
||||||
|
class MyMutation(SerializerMutation):
|
||||||
|
class Meta:
|
||||||
|
serializer_class = MyModelSerializer
|
||||||
|
|
||||||
|
# missing required fields
|
||||||
|
result = MyMutation.mutate_and_get_payload(None, None, **{})
|
||||||
|
assert len(result.errors) > 0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user