Skip to content

Commit ccecdf0

Browse files
committed
Add test to confirm that get_queryset gets called for related foreign keys
1 parent 08c48aa commit ccecdf0

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

graphene_django/tests/test_fields.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,3 +316,63 @@ def resolve_reporters(_, info):
316316

317317
assert not result.errors
318318
assert result.data == {"reporters": [{"firstName": "Debra"},]}
319+
320+
def test_get_queryset_foreign_key(self):
321+
class Article(DjangoObjectType):
322+
class Meta:
323+
model = ArticleModel
324+
fields = ("headline",)
325+
326+
@classmethod
327+
def get_queryset(cls, queryset, info):
328+
# Rose tinted glasses
329+
return queryset.exclude(headline__contains="Not so good")
330+
331+
class Reporter(DjangoObjectType):
332+
class Meta:
333+
model = ReporterModel
334+
fields = ("first_name", "articles")
335+
336+
class Query(ObjectType):
337+
reporters = DjangoListField(Reporter)
338+
339+
schema = Schema(query=Query)
340+
341+
query = """
342+
query {
343+
reporters {
344+
firstName
345+
articles {
346+
headline
347+
}
348+
}
349+
}
350+
"""
351+
352+
r1 = ReporterModel.objects.create(first_name="Tara", last_name="West")
353+
ReporterModel.objects.create(first_name="Debra", last_name="Payne")
354+
355+
ArticleModel.objects.create(
356+
headline="Amazing news",
357+
reporter=r1,
358+
pub_date=datetime.date.today(),
359+
pub_date_time=datetime.datetime.now(),
360+
editor=r1,
361+
)
362+
ArticleModel.objects.create(
363+
headline="Not so good news",
364+
reporter=r1,
365+
pub_date=datetime.date.today(),
366+
pub_date_time=datetime.datetime.now(),
367+
editor=r1,
368+
)
369+
370+
result = schema.execute(query)
371+
372+
assert not result.errors
373+
assert result.data == {
374+
"reporters": [
375+
{"firstName": "Tara", "articles": [{"headline": "Amazing news"},],},
376+
{"firstName": "Debra", "articles": []},
377+
]
378+
}

0 commit comments

Comments
 (0)