From 380310c60bfb3ca48ce3c2275c53b3e703c87024 Mon Sep 17 00:00:00 2001 From: B4rtware <34386047+B4rtware@users.noreply.github.com> Date: Sat, 15 Feb 2020 13:29:51 +0100 Subject: [PATCH] add test for serializer method field --- graphene_django/rest_framework/models.py | 5 +++ .../rest_framework/tests/test_mutation.py | 34 ++++++++++++++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/graphene_django/rest_framework/models.py b/graphene_django/rest_framework/models.py index 06d9b60..86a241d 100644 --- a/graphene_django/rest_framework/models.py +++ b/graphene_django/rest_framework/models.py @@ -9,3 +9,8 @@ class MyFakeModel(models.Model): class MyFakeModelWithPassword(models.Model): cool_name = models.CharField(max_length=50) password = models.CharField(max_length=50) + + +class MyFakeModelWithDate(models.Model): + cool_name = models.CharField(max_length=50) + last_edited = models.DateField() \ No newline at end of file diff --git a/graphene_django/rest_framework/tests/test_mutation.py b/graphene_django/rest_framework/tests/test_mutation.py index bfb247d..b9928a0 100644 --- a/graphene_django/rest_framework/tests/test_mutation.py +++ b/graphene_django/rest_framework/tests/test_mutation.py @@ -8,7 +8,7 @@ from graphene.types.inputobjecttype import InputObjectType from ...settings import graphene_settings from ...types import DjangoObjectType -from ..models import MyFakeModel, MyFakeModelWithPassword +from ..models import MyFakeModel, MyFakeModelWithPassword, MyFakeModelWithDate from ..mutation import SerializerMutation @@ -33,6 +33,18 @@ class MyModelSerializer(serializers.ModelSerializer): fields = "__all__" +class MyModelSerializerWithMethod(serializers.ModelSerializer): + days_since_last_edit = serializers.SerializerMethodField() + + class Meta: + model = MyFakeModelWithDate + fields = "__all__" + + def get_days_since_last_edit(self, obj): + now = datetime.date.fromisoformat("2020-01-08") + return (now - obj.last_edited).days + + class MyModelMutation(SerializerMutation): class Meta: serializer_class = MyModelSerializer @@ -208,6 +220,26 @@ def test_model_invalid_update_mutate_and_get_payload_success(): assert '"id" required' in str(exc.value) +@mark.django_db +def test_perform_mutate_success(): + class MyMethodMutation(SerializerMutation): + class Meta: + serializer_class = MyModelSerializerWithMethod + + result = MyMethodMutation.mutate_and_get_payload( + None, + mock_info(), + **{ + "cool_name": "Narf", + "last_edited": datetime.date.fromisoformat("2020-01-04"), + } + ) + + assert result.errors is None + assert result.cool_name == "Narf" + assert result.days_since_last_edit == 4 + + def test_mutate_and_get_payload_error(): class MyMutation(SerializerMutation): class Meta: