From 9aca4a96675ff95b21e844788caa805cad73bf0a Mon Sep 17 00:00:00 2001 From: Jonathan Kim Date: Sun, 12 Apr 2020 15:19:52 +0100 Subject: [PATCH] Add test to confirm that get_queryset gets called for related foreign keys --- graphene_django/tests/test_fields.py | 60 ++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/graphene_django/tests/test_fields.py b/graphene_django/tests/test_fields.py index 39b82ab..9288e08 100644 --- a/graphene_django/tests/test_fields.py +++ b/graphene_django/tests/test_fields.py @@ -316,3 +316,63 @@ class TestDjangoListField: assert not result.errors assert result.data == {"reporters": [{"firstName": "Debra"},]} + + def test_get_queryset_foreign_key(self): + class Article(DjangoObjectType): + class Meta: + model = ArticleModel + fields = ("headline",) + + @classmethod + def get_queryset(cls, queryset, info): + # Rose tinted glasses + return queryset.exclude(headline__contains="Not so good") + + class Reporter(DjangoObjectType): + class Meta: + model = ReporterModel + fields = ("first_name", "articles") + + class Query(ObjectType): + reporters = DjangoListField(Reporter) + + schema = Schema(query=Query) + + query = """ + query { + reporters { + firstName + articles { + headline + } + } + } + """ + + r1 = ReporterModel.objects.create(first_name="Tara", last_name="West") + ReporterModel.objects.create(first_name="Debra", last_name="Payne") + + ArticleModel.objects.create( + headline="Amazing news", + reporter=r1, + pub_date=datetime.date.today(), + pub_date_time=datetime.datetime.now(), + editor=r1, + ) + ArticleModel.objects.create( + headline="Not so good news", + reporter=r1, + pub_date=datetime.date.today(), + pub_date_time=datetime.datetime.now(), + editor=r1, + ) + + result = schema.execute(query) + + assert not result.errors + assert result.data == { + "reporters": [ + {"firstName": "Tara", "articles": [{"headline": "Amazing news"},],}, + {"firstName": "Debra", "articles": []}, + ] + }