Skip to content

Commit 6d0837e

Browse files
committed
add test to show annotation not being perservered
1 parent 5491e2c commit 6d0837e

File tree

1 file changed

+58
-1
lines changed

1 file changed

+58
-1
lines changed

graphene_django/filter/tests/test_fields.py

Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,18 @@
22

33
import pytest
44

5-
from graphene import Field, ObjectType, Schema, Argument, Float, Boolean
5+
from graphene import Field, ObjectType, Schema, Argument, Float, Boolean, String
66
from graphene.relay import Node
77
from graphene_django import DjangoObjectType
88
from graphene_django.forms import (GlobalIDFormField,
99
GlobalIDMultipleChoiceField)
1010
from graphene_django.tests.models import Article, Pet, Reporter
1111
from graphene_django.utils import DJANGO_FILTER_INSTALLED
1212

13+
# for annotation test
14+
from django.db.models import TextField, Value
15+
from django.db.models.functions import Concat
16+
1317
pytestmark = []
1418

1519
if DJANGO_FILTER_INSTALLED:
@@ -613,3 +617,56 @@ def resolve_all_reporters(self, info, reverse_order=False, **args):
613617

614618
assert not reverse_result.errors
615619
assert reverse_result.data == reverse_expected
620+
621+
def test_annotation_is_perserved():
622+
class ReporterType(DjangoObjectType):
623+
full_name = String()
624+
625+
def resolve_full_name(instance, info, **args):
626+
return instance.full_name
627+
628+
class Meta:
629+
model = Reporter
630+
interfaces = (Node, )
631+
filter_fields = ()
632+
633+
class Query(ObjectType):
634+
all_reporters = DjangoFilterConnectionField(ReporterType)
635+
636+
def resolve_all_reporters(self, info, **args):
637+
return Reporter.objects.annotate(
638+
full_name=Concat('first_name', Value(' '), 'last_name', output_field=TextField())
639+
)
640+
641+
Reporter.objects.create(
642+
first_name='John',
643+
last_name='Doe',
644+
)
645+
646+
schema = Schema(query=Query)
647+
648+
query = '''
649+
query NodeFilteringQuery {
650+
allReporters(first: 1) {
651+
edges {
652+
node {
653+
fullName
654+
}
655+
}
656+
}
657+
}
658+
'''
659+
expected = {
660+
'allReporters': {
661+
'edges': [{
662+
'node': {
663+
'fullName': 'John Doe',
664+
}
665+
}]
666+
}
667+
}
668+
669+
result = schema.execute(query)
670+
671+
assert not result.errors
672+
assert result.data == expected

0 commit comments

Comments
 (0)