Skip to content

Commit a1519fc

Browse files
committed
Merge pull request #81 from glowka/master
Fixed NodeField object_type string name argument.
2 parents dead957 + 2e20cd8 commit a1519fc

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

graphene/relay/fields.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import six
12
from graphql_relay.node.node import from_global_id
23

34
from ..core.fields import Field
@@ -73,8 +74,11 @@ def id_fetcher(self, global_id, info):
7374
return None
7475
_type, _id = resolved_global_id.type, resolved_global_id.id
7576
object_type = schema.get_type(_type)
76-
if not is_node(object_type) or (self.field_object_type and
77-
object_type != self.field_object_type):
77+
if isinstance(self.field_object_type, six.string_types):
78+
field_object_type = schema.get_type(self.field_object_type)
79+
else:
80+
field_object_type = self.field_object_type
81+
if not is_node(object_type) or (self.field_object_type and object_type != field_object_type):
7882
return
7983

8084
return object_type.get_node(_id, info)

graphene/relay/tests/test_query.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ def get_node(cls, id, info):
3131

3232
class Query(graphene.ObjectType):
3333
my_node = relay.NodeField(MyNode)
34+
my_node_lazy = relay.NodeField('MyNode')
3435
special_node = relay.NodeField(SpecialNode)
3536
all_my_nodes = relay.ConnectionField(
3637
MyNode, connection_type=MyConnection, customArg=graphene.String())
@@ -117,3 +118,23 @@ def test_nodeidfield():
117118
id_field_type = schema.T(id_field)
118119
assert isinstance(id_field_type.type, GraphQLNonNull)
119120
assert id_field_type.type.of_type == GraphQLID
121+
122+
123+
def test_nodefield_lazy_query():
124+
query = '''
125+
query RebelsShipsQuery {
126+
myNode(id:"TXlOb2RlOjE=") {
127+
id
128+
name
129+
},
130+
myNodeLazy(id:"TXlOb2RlOjE=") {
131+
id
132+
name
133+
},
134+
135+
}
136+
'''
137+
result = schema.execute(query)
138+
assert not result.errors
139+
assert result.data['myNode'] == result.data['myNodeLazy'], \
140+
"NodeField with object_type direct reference and with object_type string name should not differ."

0 commit comments

Comments
 (0)