4f5a31d2 |
<?php declare(strict_types=1);
/**
* Part of Windwalker project Test files. @codingStandardsIgnoreStart
*
* @copyright Copyright (C) 2019 LYRASOFT Taiwan, Inc.
* @license LGPL-2.0-or-later
*/
namespace Windwalker\Renderer\Test;
use Windwalker\Dom\Test\AbstractDomTestCase;
use Windwalker\Renderer\PhpRenderer;
/**
* Test class of PhpRenderer
*
* @since 2.0
*/
class PhpRendererTest extends AbstractDomTestCase
{
/**
* Test instance.
*
* @var PhpRenderer
*/
protected $instance;
/**
* Property path.
*
* @var string
*/
protected static $path;
/**
* Sets up the fixture, for example, opens a network connection.
* This method is called before a test is executed.
*
* @return void
*/
protected function setUp(): void
{
static::$path = realpath(__DIR__ . '/Tmpl/php');
if (!static::$path) {
throw new \RuntimeException('Path not exists');
}
$this->instance = new PhpRenderer(static::$path);
}
/**
* Tears down the fixture, for example, closes a network connection.
* This method is called after a test is executed.
*
* @return void
*/
protected function tearDown(): void
{
}
/**
* Method to test render().
*
* @return void
*
* @covers \Windwalker\Renderer\PhpRenderer::render
*/
public function testRender()
{
$html = $this->instance->render('default');
$expect = <<<HTML
<div id="default">
Default
</div>
HTML;
$this->assertDomStringEqualsDomString($expect, $html);
}
/**
* Method to test findFile().
*
* @return void
*
* @covers \Windwalker\Renderer\PhpRenderer::findFile
*/
public function testFindFile()
{
$file = $this->instance->findFile('flower');
$this->assertEquals(realpath(static::$path . '/flower.php'), $file);
$file = $this->instance->findFile('foo/bar');
$this->assertEquals(realpath(static::$path . '/foo/bar.php'), $file);
}
/**
* Method to test extend().
*
* @return void
*
* @covers \Windwalker\Renderer\PhpRenderer::extend
*/
public function testRenderTopLevelBlock()
{
$html = $this->instance->render('extend1');
$expect = <<<HTML
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur eleifend, ante vitae vestibulum tempus
</p>
HTML;
$this->assertDomStringEqualsDomString($expect, $html);
}
/**
* Method to test extend().
*
* @return void
*
* @covers \Windwalker\Renderer\PhpRenderer::extend
*/
public function testExtend()
{
$html = $this->instance->render('foo/extend2');
$expect = <<<HTML
<p>
Lorem ipsum dolor sit amet,
<span>Vivamus tincidunt consectetur finibus.</span>
Curabitur eleifend, ante vitae vestibulum tempus
</p>
HTML;
$this->assertDomStringEqualsDomString($expect, $html);
$this->instance->reset();
// Render twice
$html = $this->instance->render('foo/extend3');
$expect = <<<HTML
<p>
Lorem ipsum dolor sit amet,
<span>Sed tempor urna quis varius luctus.</span>
Curabitur eleifend, ante vitae vestibulum tempus
</p>
HTML;
$this->assertDomStringEqualsDomString($expect, $html);
}
/**
* testExtendMultiLevels
*
* @return void
*/
public function testExtendMultiLevels()
{
$html = $this->instance->render('foo/extend3');
$expect = <<<HTML
<p>
Lorem ipsum dolor sit amet,
<span>Sed tempor urna quis varius luctus.</span>
Curabitur eleifend, ante vitae vestibulum tempus
</p>
HTML;
$this->assertDomStringEqualsDomString($expect, $html);
}
/**
* testExtendWithParent
*
* @return void
*/
public function testExtendWithParent()
{
$html = $this->instance->render('foo/extend-with-parent');
$expect = <<<HTML
<p>
Lorem ipsum dolor sit amet,
<span>Vivamus tincidunt consectetur finibus.</span>
<span>Sed tempor urna quis varius luctus.</span>
Curabitur eleifend, ante vitae vestibulum tempus
</p>
HTML;
$this->assertDomStringEqualsDomString($expect, $html);
}
/**
* testLoad
*
* @return void
*/
public function testLoad()
{
$html = $this->instance->render('include1');
$expect = <<<HTML
<div id="flower">
<h1>BAR</h1>
<p>Quisque egestas posuere enim non dapibus.</p>
</div>
HTML;
$this->assertDomStringEqualsDomString($expect, $html);
}
/**
* testLoadWithData
*
* @return void
*/
public function testLoadWithData()
{
$data = [
'class' => 'flower',
'title' => 'Sakura',
'content' => 'Nulla sollicitudin vel augue quis aliquet.',
];
$html = $this->instance->render('data1', $data);
$expect = <<<HTML
<div id="data" class="flower">
<h1>Sakura</h1>
<p>Morbi suscipit ante massa</p>
</div>
HTML;
$this->assertDomStringEqualsDomString($expect, $html);
}
/**
* Method to test escape().
*
* @return void
*
* @covers \Windwalker\Renderer\AbstractRenderer::escape
*/
public function testEscape()
{
$html = '<div id="data" class="flower" onclick="jQuery(\'#data .gota\').distroy();"></div>';
$this->assertEquals(
'<div id="data" class="flower" onclick="jQuery(\'#data .gota\').distroy();"></div>',
$this->instance->escape($html)
);
}
/**
* Method to test getPaths().
*
* @return void
*
* @covers \Windwalker\Renderer\AbstractRenderer::getPaths
* @TODO Implement testGetPaths().
*/
public function testGetPaths()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* Method to test setPaths().
*
* @return void
*
* @covers \Windwalker\Renderer\AbstractRenderer::setPaths
* @TODO Implement testSetPaths().
*/
public function testSetPaths()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* Method to test addPath().
*
* @return void
*
* @covers \Windwalker\Renderer\AbstractRenderer::addPath
* @TODO Implement testAddPath().
*/
public function testAddPath()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* Method to test getBlock().
*
* @return void
*
* @covers \Windwalker\Renderer\PhpRenderer::getBlock
* @TODO Implement testGetBlock().
*/
public function testGetBlock()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* Method to test setBlock().
*
* @return void
*
* @covers \Windwalker\Renderer\PhpRenderer::setBlock
* @TODO Implement testSetBlock().
*/
public function testSetBlock()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
/**
* Method to test getBlockQueue().
*
* @return void
*
* @covers \Windwalker\Renderer\PhpRenderer::getBlockQueue
* @TODO Implement testGetBlockQueue().
*/
public function testGetBlockQueue()
{
// Remove the following lines when you implement this test.
$this->markTestIncomplete(
'This test has not been implemented yet.'
);
}
}
|