11import weakref
22from copy import copy , deepcopy
3+ from typing import Optional
34
4- from graphql .language import Location , Node , Source , Token , TokenKind
5+ from graphql .language import Location , NameNode , Node , Source , Token , TokenKind
56from graphql .pyutils import inspect
67
78
@@ -12,6 +13,13 @@ class SampleTestNode(Node):
1213 beta : int
1314
1415
16+ class SampleNamedNode (Node ):
17+ __slots__ = "foo" , "name"
18+
19+ foo : str
20+ name : Optional [str ]
21+
22+
1523def describe_token_class ():
1624 def initializes ():
1725 token = Token (
@@ -160,6 +168,25 @@ def has_representation_with_loc():
160168 node = SampleTestNode (alpha = 1 , beta = 2 , loc = 3 )
161169 assert repr (node ) == "SampleTestNode at 3"
162170
171+ def has_representation_when_named ():
172+ name_node = NameNode (value = "baz" )
173+ node = SampleNamedNode (foo = "bar" , name = name_node )
174+ assert repr (node ) == "SampleNamedNode(name='baz')"
175+ node = SampleNamedNode (alpha = 1 , beta = 2 , name = name_node , loc = 3 )
176+ assert repr (node ) == "SampleNamedNode(name='baz') at 3"
177+
178+ def has_representation_when_named_but_name_is_none ():
179+ node = SampleNamedNode (alpha = 1 , beta = 2 , name = None )
180+ assert repr (node ) == "SampleNamedNode"
181+ node = SampleNamedNode (alpha = 1 , beta = 2 , name = None , loc = 3 )
182+ assert repr (node ) == "SampleNamedNode at 3"
183+
184+ def has_special_representation_when_it_is_a_name_node ():
185+ node = NameNode (value = "foo" )
186+ assert repr (node ) == "NameNode('foo')"
187+ node = NameNode (value = "foo" , loc = 3 )
188+ assert repr (node ) == "NameNode('foo') at 3"
189+
163190 def can_check_equality ():
164191 node = SampleTestNode (alpha = 1 , beta = 2 )
165192 node2 = SampleTestNode (alpha = 1 , beta = 2 )
0 commit comments