@@ -15,8 +15,13 @@ def test_allows_editing_a_node_both_on_enter_and_on_leave():
15
15
ast = parse ('{ a, b, c { a, b, c } }' , no_location = True )
16
16
17
17
class TestVisitor (Visitor ):
18
+ def __init__ (self ):
19
+ self .did_enter = False
20
+ self .did_leave = False
21
+
18
22
def enter (self , node , * args ):
19
23
if isinstance (node , OperationDefinition ):
24
+ self .did_enter = True
20
25
selection_set = node .selection_set
21
26
self .selections = None
22
27
if selection_set :
@@ -33,6 +38,7 @@ def enter(self, node, *args):
33
38
34
39
def leave (self , node , * args ):
35
40
if isinstance (node , OperationDefinition ):
41
+ self .did_leave = True
36
42
new_selection_set = None
37
43
if self .selections :
38
44
new_selection_set = SelectionSet (
@@ -45,9 +51,12 @@ def leave(self, node, *args):
45
51
operation = node .operation ,
46
52
selection_set = new_selection_set )
47
53
48
- edited_ast = visit (ast , TestVisitor ())
54
+ visitor = TestVisitor ()
55
+ edited_ast = visit (ast , visitor )
49
56
assert ast == parse ('{ a, b, c { a, b, c } }' , no_location = True )
50
57
assert edited_ast == ast
58
+ assert visitor .did_enter
59
+ assert visitor .did_leave
51
60
52
61
53
62
def test_allows_editing_the_root_node_on_enter_and_on_leave ():
@@ -56,20 +65,29 @@ def test_allows_editing_the_root_node_on_enter_and_on_leave():
56
65
definitions = ast .definitions
57
66
58
67
class TestVisitor (Visitor ):
68
+ def __init__ (self ):
69
+ self .did_enter = False
70
+ self .did_leave = False
71
+
59
72
def enter (self , node , * args ):
60
73
if isinstance (node , Document ):
74
+ self .did_enter = True
61
75
return Document (
62
76
loc = node .loc ,
63
77
definitions = [])
64
78
65
79
def leave (self , node , * args ):
66
80
if isinstance (node , Document ):
81
+ self .did_leave = True
67
82
return Document (
68
83
loc = node .loc ,
69
84
definitions = definitions )
70
85
71
- edited_ast = visit (ast , TestVisitor ())
86
+ visitor = TestVisitor ()
87
+ edited_ast = visit (ast , visitor )
72
88
assert edited_ast == ast
89
+ assert visitor .did_enter
90
+ assert visitor .did_leave
73
91
74
92
75
93
def test_allows_for_editing_on_enter ():
0 commit comments