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

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

    public function testAllowsEditingNodeOnEnterAndOnLeave()
    {
        $ast = Parser::parse('{ a, b, c { a, b, c } }', ['noLocation' => true]);
        $selectionSet = null;
        $editedAst = Visitor::visit($ast, [NodeKind::OPERATION_DEFINITION => ['enter' => function (OperationDefinitionNode $node) use(&$selectionSet) {
            $selectionSet = $node->selectionSet;
            $newNode = clone $node;
            $newNode->selectionSet = new SelectionSetNode(['selections' => []]);
            $newNode->didEnter = true;
            return $newNode;
        }, 'leave' => function (OperationDefinitionNode $node) use(&$selectionSet) {
            $newNode = clone $node;
            $newNode->selectionSet = $selectionSet;
            $newNode->didLeave = true;
            return $newNode;
        }]]);
        $this->assertNotEquals($ast, $editedAst);
        $expected = $ast->cloneDeep();
        $expected->definitions[0]->didEnter = true;
        $expected->definitions[0]->didLeave = true;
        $this->assertEquals($expected, $editedAst);
    }