GraphQL\Tests\Language\VisitorTest::testAllowsEarlyExitWhileVisiting PHP Метод

testAllowsEarlyExitWhileVisiting() публичный Метод

    public function testAllowsEarlyExitWhileVisiting()
    {
        $visited = [];
        $ast = Parser::parse('{ a, b { x }, c }');
        Visitor::visit($ast, ['enter' => function (Node $node) use(&$visited) {
            $visited[] = ['enter', $node->kind, isset($node->value) ? $node->value : null];
            if ($node instanceof NameNode && $node->value === 'x') {
                return Visitor::stop();
            }
        }, 'leave' => function (Node $node) use(&$visited) {
            $visited[] = ['leave', $node->kind, isset($node->value) ? $node->value : null];
        }]);
        $expected = [['enter', 'Document', null], ['enter', 'OperationDefinition', null], ['enter', 'SelectionSet', null], ['enter', 'Field', null], ['enter', 'Name', 'a'], ['leave', 'Name', 'a'], ['leave', 'Field', null], ['enter', 'Field', null], ['enter', 'Name', 'b'], ['leave', 'Name', 'b'], ['enter', 'SelectionSet', null], ['enter', 'Field', null], ['enter', 'Name', 'x']];
        $this->assertEquals($expected, $visited);
    }