|
5 | 5 | from django.db.models import Count, Prefetch
|
6 | 6 |
|
7 | 7 | from graphene import List, NonNull, ObjectType, Schema, String
|
| 8 | +from graphene.relay import Node |
8 | 9 |
|
9 |
| -from ..fields import DjangoListField |
| 10 | +from ..fields import DjangoConnectionField, DjangoListField |
10 | 11 | from ..types import DjangoObjectType
|
11 | 12 | from .models import (
|
12 | 13 | Article as ArticleModel,
|
@@ -716,3 +717,37 @@ def resolve_articles(root, info):
|
716 | 717 | r'SELECT .* FROM "tests_film" INNER JOIN "tests_film_reporters" .* LEFT OUTER JOIN "tests_filmdetails"',
|
717 | 718 | captured.captured_queries[1]["sql"],
|
718 | 719 | )
|
| 720 | + |
| 721 | + |
| 722 | +class TestDjangoConnectionField: |
| 723 | + def test_can_use_custom_resolver(self): |
| 724 | + def resolve_some_people(*args, **kwargs): |
| 725 | + return PersonModel.objects.filter(name="Bob") |
| 726 | + |
| 727 | + class PersonType(DjangoObjectType): |
| 728 | + class Meta: |
| 729 | + model = PersonModel |
| 730 | + interfaces = (Node,) |
| 731 | + |
| 732 | + class Query(ObjectType): |
| 733 | + people = DjangoConnectionField(PersonType, resolver=resolve_some_people) |
| 734 | + |
| 735 | + schema = Schema(query=Query) |
| 736 | + PersonModel.objects.create(name="Bob") |
| 737 | + PersonModel.objects.create(name="Alice") |
| 738 | + |
| 739 | + query = """ |
| 740 | + query { |
| 741 | + people { |
| 742 | + edges { |
| 743 | + node { |
| 744 | + name |
| 745 | + } |
| 746 | + } |
| 747 | + } |
| 748 | + } |
| 749 | + """ |
| 750 | + |
| 751 | + result = schema.execute(query) |
| 752 | + assert not result.errors |
| 753 | + assert result.data == {"people": {"edges": [{"node": {"name": "Bob"}}]}} |
0 commit comments