1
1
import weakref
2
2
from copy import copy , deepcopy
3
+ from typing import Optional
3
4
4
- from graphql .language import Location , Node , Source , Token , TokenKind
5
+ from graphql .language import Location , NameNode , Node , Source , Token , TokenKind
5
6
from graphql .pyutils import inspect
6
7
7
8
@@ -12,6 +13,13 @@ class SampleTestNode(Node):
12
13
beta : int
13
14
14
15
16
+ class SampleNamedNode (Node ):
17
+ __slots__ = "foo" , "name"
18
+
19
+ foo : str
20
+ name : Optional [str ]
21
+
22
+
15
23
def describe_token_class ():
16
24
def initializes ():
17
25
token = Token (
@@ -160,6 +168,25 @@ def has_representation_with_loc():
160
168
node = SampleTestNode (alpha = 1 , beta = 2 , loc = 3 )
161
169
assert repr (node ) == "SampleTestNode at 3"
162
170
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
+
163
190
def can_check_equality ():
164
191
node = SampleTestNode (alpha = 1 , beta = 2 )
165
192
node2 = SampleTestNode (alpha = 1 , beta = 2 )
0 commit comments