Skip to content

Commit a22c927

Browse files
authored
Merge pull request #361 from Globegitter/node-simplifications
Make node arg options and default required to True for GlobalID.
2 parents 50eadde + 0a79df3 commit a22c927

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

graphene/relay/node.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ class Meta:
3535

3636
class GlobalID(Field):
3737

38-
def __init__(self, node, *args, **kwargs):
39-
super(GlobalID, self).__init__(ID, *args, **kwargs)
40-
self.node = node
38+
def __init__(self, node=None, required=True, *args, **kwargs):
39+
super(GlobalID, self).__init__(ID, required=required, *args, **kwargs)
40+
self.node = node or Node
4141

4242
@staticmethod
4343
def id_resolver(parent_resolver, node, root, args, context, info):
@@ -52,7 +52,7 @@ class NodeMeta(InterfaceMeta):
5252

5353
def __new__(cls, name, bases, attrs):
5454
cls = InterfaceMeta.__new__(cls, name, bases, attrs)
55-
cls._meta.fields['id'] = GlobalID(cls, required=True, description='The ID of the object.')
55+
cls._meta.fields['id'] = GlobalID(cls, description='The ID of the object.')
5656
return cls
5757

5858

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from ..node import Node, GlobalID
2+
3+
from ...types import NonNull, ID
4+
5+
6+
class CustomNode(Node):
7+
8+
class Meta:
9+
name = 'Node'
10+
11+
12+
def test_global_id_defaults_to_required_and_node():
13+
gid = GlobalID()
14+
assert isinstance(gid.type, NonNull)
15+
assert gid.type.of_type == ID
16+
assert gid.node == Node
17+
18+
19+
def test_global_id_allows_overriding_of_node_and_required():
20+
gid = GlobalID(node=CustomNode, required=False)
21+
assert gid.type == ID
22+
assert gid.node == CustomNode

0 commit comments

Comments
 (0)