public function testVisitsEditedNode()
{
$addedField = new FieldNode(array('name' => new NameNode(array('value' => '__typename'))));
$didVisitAddedField = false;
$ast = Parser::parse('{ a { x } }');
Visitor::visit($ast, ['enter' => function ($node) use($addedField, &$didVisitAddedField) {
if ($node instanceof FieldNode && $node->name->value === 'a') {
return new FieldNode(['selectionSet' => new SelectionSetNode(array('selections' => array_merge([$addedField], $node->selectionSet->selections)))]);
}
if ($node === $addedField) {
$didVisitAddedField = true;
}
}]);
$this->assertTrue($didVisitAddedField);
}