Skip to content

Commit

Permalink
Fix Relay Connection ID (#56)
Browse files Browse the repository at this point in the history
  • Loading branch information
iorlandini committed Nov 8, 2020
1 parent 760676e commit fb23258
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 7 deletions.
2 changes: 2 additions & 0 deletions graphene_django_optimizer/query.py
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,8 @@ def _get_name_from_resolver(self, resolver):
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):
Expand Down
6 changes: 3 additions & 3 deletions tests/schema.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
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
Expand Down Expand Up @@ -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()
Expand Down
8 changes: 6 additions & 2 deletions tests/test_relay.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,16 @@ def test_should_return_valid_result_in_a_relay_query():
edges {
node {
id
parentId
name
}
}
}
}
''')
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'


Expand Down Expand Up @@ -161,6 +163,7 @@ def test_should_resolve_nested_variables():
edges {
node {
id
parentId
}
}
}
Expand All @@ -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=='
8 changes: 6 additions & 2 deletions tests/test_resolver.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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 comments on commit fb23258

Please sign in to comment.