Bolt\Tests\Twig\SetcontentTest::testParse PHP Метод

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

public testParse ( )
    public function testParse()
    {
        $app = $this->getApp();
        $name = 'koala';
        $where = "{ status: 'published', datepublish: '> 2012-06-14', taxonomy: 'main|||meta|||other' }";
        $contentType = 'pages';
        $limit = 5;
        $streamTokens = [new Twig_Token(Twig_Token::NAME_TYPE, $name, 1), new Twig_Token(Twig_Token::OPERATOR_TYPE, '=', 2), new Twig_Token(Twig_Token::STRING_TYPE, $contentType, 3), new Twig_Token(Twig_Token::NAME_TYPE, 'where', 4), new Twig_Token(Twig_Token::STRING_TYPE, $where, 5), new Twig_Token(Twig_Token::NAME_TYPE, 'limit', 6), new Twig_Token(Twig_Token::NUMBER_TYPE, $limit, 7), new Twig_Token(Twig_Token::NAME_TYPE, 'order', 8), new Twig_Token(Twig_Token::STRING_TYPE, '-name', 9), new Twig_Token(Twig_Token::NAME_TYPE, 'orderby', 10), new Twig_Token(Twig_Token::STRING_TYPE, 'title', 11), new Twig_Token(Twig_Token::NAME_TYPE, 'paging', 12), new Twig_Token(Twig_Token::NAME_TYPE, 'allowpaging', 13), new Twig_Token(Twig_Token::NAME_TYPE, 'printquery', 14), new Twig_Token(Twig_Token::NAME_TYPE, 'returnsingle', 15), new Twig_Token(Twig_Token::NAME_TYPE, 'nohydrate', 16), new Twig_Token(Twig_Token::BLOCK_END_TYPE, '', 98), new Twig_Token(Twig_Token::EOF_TYPE, '', 99)];
        $twigTokenStream = new Twig_TokenStream($streamTokens, 'clippy.twig');
        $twigParser = new TwigParserMock($app['twig']);
        $twigParser->setStream($twigTokenStream);
        $env = $app['twig'];
        $expression = new Twig_ExpressionParser($twigParser, $env);
        $twigParser->setExpressionParser($expression);
        $setContentParser = new SetcontentTokenParser();
        $setContentParser->setParser($twigParser);
        $token = new Twig_Token(Twig_Token::NAME_TYPE, 'setcontent', 1);
        $result = $setContentParser->parse($token);
        $this->assertSame($where, $result->getNode('wherearguments')->getAttribute('value'));
        $this->assertSame($name, $result->getAttribute('name'));
        $this->assertSame($contentType, $result->getAttribute('contenttype')->getAttribute('value'));
        $nodes = $result->getAttribute('arguments')->getKeyValuePairs();
        $this->assertSame('limit', $nodes[0]['key']->getAttribute('value'));
        $this->assertSame($limit, $nodes[0]['value']->getAttribute('value'));
        $this->assertSame('order', $nodes[1]['key']->getAttribute('value'));
        $this->assertSame('-name', $nodes[1]['value']->getAttribute('value'));
        $this->assertSame('order', $nodes[2]['key']->getAttribute('value'));
        $this->assertSame('title', $nodes[2]['value']->getAttribute('value'));
        $this->assertSame('paging', $nodes[3]['key']->getAttribute('value'));
        $this->assertTrue($nodes[3]['value']->getAttribute('value'));
        $this->assertSame('paging', $nodes[4]['key']->getAttribute('value'));
        $this->assertTrue($nodes[4]['value']->getAttribute('value'));
        $this->assertSame('printquery', $nodes[5]['key']->getAttribute('value'));
        $this->assertTrue($nodes[5]['value']->getAttribute('value'));
        $this->assertSame('returnsingle', $nodes[6]['key']->getAttribute('value'));
        $this->assertTrue($nodes[6]['value']->getAttribute('value'));
        $this->assertSame('hydrate', $nodes[7]['key']->getAttribute('value'));
        $this->assertFalse($nodes[7]['value']->getAttribute('value'));
        $mockLoader = $this->createMock('Twig_LoaderInterface');
        $env = new Twig_Environment($mockLoader);
        $compiler = $this->getMockBuilder(Twig_Compiler::class)->setMethods(['addDebugInfo', 'raw', 'subcompile', 'write'])->setConstructorArgs([$env])->getMock();
        $compiler->expects($this->once())->method('addDebugInfo')->willReturnSelf();
        $compiler->expects($this->atLeast(3))->method('raw')->willReturnSelf();
        $compiler->expects($this->atLeast(3))->method('subcompile')->willReturnSelf();
        $compiler->expects($this->atLeast(3))->method('write')->willReturnSelf();
        $result->compile($compiler);
    }