Skip to content
Snippets Groups Projects
Unverified Commit fb23258f authored by Ignacio Orlandini's avatar Ignacio Orlandini Committed by GitHub
Browse files

Fix Relay Connection ID (#56)

parent 760676ea
No related branches found
No related tags found
No related merge requests found
......@@ -282,6 +282,8 @@ class QueryOptimizer(object):
resolver_fn = arg
if isinstance(resolver_fn, functools.partial) and resolver_fn.func == default_resolver:
return resolver_fn.args[0]
if self._is_resolver_for_id_field(resolver_fn):
return 'id'
return resolver_fn
def _is_resolver_for_id_field(self, resolver):
......
from django.db.models import Prefetch
import graphene
from graphene import ConnectionField
from graphene import ConnectionField, relay
from graphene_django.fields import DjangoConnectionField
import graphene_django_optimizer as gql_optimizer
from graphene_django_optimizer import OptimizedDjangoObjectType
......@@ -38,8 +38,8 @@ class ItemFilterInput(graphene.InputObjectType):
class ItemInterface(graphene.Interface):
id = graphene.ID(required=True)
parent_id = graphene.ID()
id = relay.GlobalID()
parent_id = relay.GlobalID()
foo = graphene.String()
title = graphene.String()
unoptimized_title = graphene.String()
......
......@@ -19,6 +19,7 @@ def test_should_return_valid_result_in_a_relay_query():
edges {
node {
id
parentId
name
}
}
......@@ -26,7 +27,8 @@ def test_should_return_valid_result_in_a_relay_query():
}
''')
assert not result.errors
assert result.data['relayItems']['edges'][0]['node']['id'] == '7'
assert result.data['relayItems']['edges'][0]['node']['id'] == 'SXRlbU5vZGU6Nw=='
assert result.data['relayItems']['edges'][0]['node']['parentId'] == 'SXRlbU5vZGU6Tm9uZQ=='
assert result.data['relayItems']['edges'][0]['node']['name'] == 'foo'
......@@ -161,6 +163,7 @@ def test_should_resolve_nested_variables():
edges {
node {
id
parentId
}
}
}
......@@ -174,4 +177,5 @@ def test_should_resolve_nested_variables():
assert len(item_edges) == 1
child_edges = item_edges[0]['node']['relayAllChildren']['edges'][0]
assert len(child_edges) == 1
assert child_edges['node']['id'] == '8'
assert child_edges['node']['id'] == 'SXRlbU5vZGU6OA=='
assert child_edges['node']['parentId'] == 'SXRlbU5vZGU6Nw=='
......@@ -142,13 +142,15 @@ def test_should_return_valid_result_with_prefetch_related_as_a_function():
foo
filteredChildren(name: "bar") {
id
parentId
foo
}
}
}
''')
assert not result.errors
assert result.data['items'][0]['filteredChildren'][0]['id'] == '2'
assert result.data['items'][0]['filteredChildren'][0]['id'] == 'SXRlbVR5cGU6Mg=='
assert result.data['items'][0]['filteredChildren'][0]['parentId'] == 'SXRlbVR5cGU6MQ=='
@pytest.mark.django_db
......@@ -163,10 +165,12 @@ def test_should_return_valid_result_with_prefetch_related_as_a_function_using_va
foo
filteredChildren(name: $name) {
id
parentId
foo
}
}
}
''', variables={'name': 'bar'})
assert not result.errors
assert result.data['items'][0]['filteredChildren'][0]['id'] == '2'
assert result.data['items'][0]['filteredChildren'][0]['id'] == 'SXRlbVR5cGU6Mg=='
assert result.data['items'][0]['filteredChildren'][0]['parentId'] == 'SXRlbVR5cGU6MQ=='
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment