mirror of
https://github.com/graphql-python/graphene-django.git
synced 2024-11-22 09:37:07 +03:00
Allow using a custom resolver function on DjangoConnectionField
This commit is contained in:
parent
6f21dc7a94
commit
9e6fc7fc82
|
@ -245,9 +245,12 @@ class DjangoConnectionField(ConnectionField):
|
|||
return on_resolve(iterable)
|
||||
|
||||
def wrap_resolve(self, parent_resolver):
|
||||
# skip the wrap_resolve method on ConnectionField as it's already
|
||||
# wrapping the connection_resolver, so we don't want to do it twice
|
||||
resolver = super(ConnectionField, self).wrap_resolve(parent_resolver)
|
||||
return partial(
|
||||
self.connection_resolver,
|
||||
parent_resolver,
|
||||
resolver,
|
||||
self.connection_type,
|
||||
self.get_manager(),
|
||||
self.get_queryset_resolver(),
|
||||
|
|
|
@ -5,8 +5,9 @@ import pytest
|
|||
from django.db.models import Count, Prefetch
|
||||
|
||||
from graphene import List, NonNull, ObjectType, Schema, String
|
||||
from graphene.relay import Node
|
||||
|
||||
from ..fields import DjangoListField
|
||||
from ..fields import DjangoConnectionField, DjangoListField
|
||||
from ..types import DjangoObjectType
|
||||
from .models import (
|
||||
Article as ArticleModel,
|
||||
|
@ -716,3 +717,37 @@ class TestDjangoListField:
|
|||
r'SELECT .* FROM "tests_film" INNER JOIN "tests_film_reporters" .* LEFT OUTER JOIN "tests_filmdetails"',
|
||||
captured.captured_queries[1]["sql"],
|
||||
)
|
||||
|
||||
|
||||
class TestDjangoConnectionField:
|
||||
def test_can_use_custom_resolver(self):
|
||||
def resolve_some_people(*args, **kwargs):
|
||||
return PersonModel.objects.filter(name="Bob")
|
||||
|
||||
class PersonType(DjangoObjectType):
|
||||
class Meta:
|
||||
model = PersonModel
|
||||
interfaces = (Node,)
|
||||
|
||||
class Query(ObjectType):
|
||||
people = DjangoConnectionField(PersonType, resolver=resolve_some_people)
|
||||
|
||||
schema = Schema(query=Query)
|
||||
PersonModel.objects.create(name="Bob")
|
||||
PersonModel.objects.create(name="Alice")
|
||||
|
||||
query = """
|
||||
query {
|
||||
people {
|
||||
edges {
|
||||
node {
|
||||
name
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
result = schema.execute(query)
|
||||
assert not result.errors
|
||||
assert result.data == {"people": {"edges": [{"node": {"name": "Bob"}}]}}
|
||||
|
|
Loading…
Reference in New Issue
Block a user