1<?php 2 3/* 4 * This file is part of Twig. 5 * 6 * (c) Fabien Potencier 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12use Twig\Environment; 13use Twig\Loader\ArrayLoader; 14 15class Twig_Tests_TemplateWrapperTest extends \PHPUnit\Framework\TestCase 16{ 17 public function testHasGetBlocks() 18 { 19 $twig = new Environment(new ArrayLoader([ 20 'index' => '{% block foo %}{% endblock %}', 21 'index_with_use' => '{% use "imported" %}{% block foo %}{% endblock %}', 22 'index_with_extends' => '{% extends "extended" %}{% block foo %}{% endblock %}', 23 'imported' => '{% block imported %}{% endblock %}', 24 'extended' => '{% block extended %}{% endblock %}', 25 ])); 26 27 $wrapper = $twig->load('index'); 28 $this->assertTrue($wrapper->hasBlock('foo')); 29 $this->assertFalse($wrapper->hasBlock('bar')); 30 $this->assertEquals(['foo'], $wrapper->getBlockNames()); 31 32 $wrapper = $twig->load('index_with_use'); 33 $this->assertTrue($wrapper->hasBlock('foo')); 34 $this->assertTrue($wrapper->hasBlock('imported')); 35 $this->assertEquals(['imported', 'foo'], $wrapper->getBlockNames()); 36 37 $wrapper = $twig->load('index_with_extends'); 38 $this->assertTrue($wrapper->hasBlock('foo')); 39 $this->assertTrue($wrapper->hasBlock('extended')); 40 $this->assertEquals(['foo', 'extended'], $wrapper->getBlockNames()); 41 } 42 43 public function testRenderBlock() 44 { 45 $twig = new Environment(new ArrayLoader([ 46 'index' => '{% block foo %}{{ foo }}{{ bar }}{% endblock %}', 47 ])); 48 $twig->addGlobal('bar', 'BAR'); 49 50 $wrapper = $twig->load('index'); 51 $this->assertEquals('FOOBAR', $wrapper->renderBlock('foo', ['foo' => 'FOO'])); 52 } 53 54 public function testDisplayBlock() 55 { 56 $twig = new Environment(new ArrayLoader([ 57 'index' => '{% block foo %}{{ foo }}{{ bar }}{% endblock %}', 58 ])); 59 $twig->addGlobal('bar', 'BAR'); 60 61 $wrapper = $twig->load('index'); 62 63 ob_start(); 64 $wrapper->displayBlock('foo', ['foo' => 'FOO']); 65 66 $this->assertEquals('FOOBAR', ob_get_clean()); 67 } 68} 69