1
- from .. node import Node , GlobalID
1
+ from graphql_relay import to_global_id
2
2
3
- from ...types import NonNull , ID
3
+ from ..node import Node , GlobalID
4
+ from ...types import NonNull , ID , ObjectType , String
5
+ from ...types .definitions import GrapheneObjectType
4
6
5
7
6
8
class CustomNode (Node ):
@@ -9,6 +11,26 @@ class Meta:
9
11
name = 'Node'
10
12
11
13
14
+ class User (ObjectType ):
15
+
16
+ class Meta :
17
+ interfaces = [CustomNode ]
18
+ name = String ()
19
+
20
+
21
+ class Info (object ):
22
+
23
+ def __init__ (self , parent_type ):
24
+ self .parent_type = GrapheneObjectType (
25
+ graphene_type = parent_type ,
26
+ name = parent_type ._meta .name ,
27
+ description = parent_type ._meta .description ,
28
+ fields = None ,
29
+ is_type_of = parent_type .is_type_of ,
30
+ interfaces = None
31
+ )
32
+
33
+
12
34
def test_global_id_defaults_to_required_and_node ():
13
35
gid = GlobalID ()
14
36
assert isinstance (gid .type , NonNull )
@@ -20,3 +42,19 @@ def test_global_id_allows_overriding_of_node_and_required():
20
42
gid = GlobalID (node = CustomNode , required = False )
21
43
assert gid .type == ID
22
44
assert gid .node == CustomNode
45
+
46
+
47
+ def test_global_id_defaults_to_info_parent_type ():
48
+ my_id = '1'
49
+ gid = GlobalID ()
50
+ id_resolver = gid .get_resolver (lambda * _ : my_id )
51
+ my_global_id = id_resolver (None , None , None , Info (User ))
52
+ assert my_global_id == to_global_id (User ._meta .name , my_id )
53
+
54
+
55
+ def test_global_id_allows_setting_customer_parent_type ():
56
+ my_id = '1'
57
+ gid = GlobalID (parent_type = User )
58
+ id_resolver = gid .get_resolver (lambda * _ : my_id )
59
+ my_global_id = id_resolver (None , None , None , None )
60
+ assert my_global_id == to_global_id (User ._meta .name , my_id )
0 commit comments