Skip to content

Commit 12b8ca7

Browse files
committed
Merge pull request #56 from mixcloud/from-js2
Add to unit tests to ensure test accepts both edits of enter and leave
2 parents 2528d1d + b58ac1b commit 12b8ca7

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

graphql/language/tests/test_visitor.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,13 @@ def test_allows_editing_a_node_both_on_enter_and_on_leave():
1515
ast = parse('{ a, b, c { a, b, c } }', no_location=True)
1616

1717
class TestVisitor(Visitor):
18+
def __init__(self):
19+
self.did_enter = False
20+
self.did_leave = False
21+
1822
def enter(self, node, *args):
1923
if isinstance(node, OperationDefinition):
24+
self.did_enter = True
2025
selection_set = node.selection_set
2126
self.selections = None
2227
if selection_set:
@@ -33,6 +38,7 @@ def enter(self, node, *args):
3338

3439
def leave(self, node, *args):
3540
if isinstance(node, OperationDefinition):
41+
self.did_leave = True
3642
new_selection_set = None
3743
if self.selections:
3844
new_selection_set = SelectionSet(
@@ -45,9 +51,12 @@ def leave(self, node, *args):
4551
operation=node.operation,
4652
selection_set=new_selection_set)
4753

48-
edited_ast = visit(ast, TestVisitor())
54+
visitor = TestVisitor()
55+
edited_ast = visit(ast, visitor)
4956
assert ast == parse('{ a, b, c { a, b, c } }', no_location=True)
5057
assert edited_ast == ast
58+
assert visitor.did_enter
59+
assert visitor.did_leave
5160

5261

5362
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():
5665
definitions = ast.definitions
5766

5867
class TestVisitor(Visitor):
68+
def __init__(self):
69+
self.did_enter = False
70+
self.did_leave = False
71+
5972
def enter(self, node, *args):
6073
if isinstance(node, Document):
74+
self.did_enter = True
6175
return Document(
6276
loc=node.loc,
6377
definitions=[])
6478

6579
def leave(self, node, *args):
6680
if isinstance(node, Document):
81+
self.did_leave = True
6782
return Document(
6883
loc=node.loc,
6984
definitions=definitions)
7085

71-
edited_ast = visit(ast, TestVisitor())
86+
visitor = TestVisitor()
87+
edited_ast = visit(ast, visitor)
7288
assert edited_ast == ast
89+
assert visitor.did_enter
90+
assert visitor.did_leave
7391

7492

7593
def test_allows_for_editing_on_enter():

0 commit comments

Comments
 (0)