You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

249 lines
5.8 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
/**
* Gniearks TplBlock unit tests.
*
* PHP version 5
*
* @category Template
* @package TplBlock
* @author gnieark <gnieark@tinad.fr>
* @license GNU General Public License V3
* @link https://github.com/gnieark/tplBlock/
*/
use PHPUnit\Framework\TestCase;
/**
* The TplBlockTest class.
*
* @category Template
* @package TplBlock
* @author gnieark <gnieark@tinad.fr>
* @license GNU General Public License V3
* @link https://github.com/gnieark/tplBlock/
*/
class TplBlockTest extends TestCase
{
/**
* A template cannot accept a sub template with no name.
*
* @return void
*
* @expectedException UnexpectedValueException
*/
public function testSendEmptyNameOnSubFunction()
{
$template = new TplBlock();
$subTemplate = new TplBlock();
$template->addSubBlock($subTemplate);
}
/**
* Verify that variable replacement takes place.
*
* @return void
*/
public function testSimpleVar()
{
$template = new TplBlock();
$variables = [
"name" => "Gnieark",
"title" => "Monsieur",
"firstname" => "Grouik",
];
$actual = $template
->addVars($variables)
->applyTplStr("Hello {{name}}");
$this->assertEquals("Hello Gnieark", $actual);
}
/**
* Test from a file.
*
* @return void
*/
public function testParseFromFile()
{
file_put_contents("temp.txt", "Hello {{name}}");
$template = new TplBlock();
$variables = [
"name" => "Gnieark",
"title" => "Monsieur",
"firstname" => "Grouik",
];
$actual = $template
->addVars($variables)
->applyTplFile("temp.txt");
$this->assertEquals("Hello Gnieark", $actual);
unlink("temp.txt");
}
/**
* Test blocs.
*
* @return void
*/
public function testBlocs()
{
$model = "
Bhah blah wpooie456
<!-- BEGIN bloc -->
have to be shown
<!-- END bloc -->
<!-- BEGIN blocTwo -->
WONT to be shown
<!-- END blocTwo -->
";
$template = new TplBlock();
$actual = $template
->addSubBlock(new TplBlock("bloc"))
->applyTplStr($model);
$this->assertContains("have", $actual);
$this->assertFalse(strpos("WONT", $actual));
}
/**
* Test blocs with tabs spaces etc..
*
* @return void
*/
public function testBlocsWithsWeirdSpaces()
{
$model = "
Bhah blah wpooie456
<!-- BEGIN bloc -->
have to be shown
<!-- END bloc -->
<!-- BEGIN blocTwo -->
WONT to be shown
<!-- END blocTwo -->
";
$template = new TplBlock();
$actual = $template
->addSubBlock(new TplBlock("bloc"))
->applyTplStr($model);
$this->assertContains("have", $actual);
$this->assertFalse(strpos("WONT", $actual));
}
/**
* Test if error on blocks names WTF.
*
* @return void
*
* @expectedException UnexpectedValueException
*/
public function testIfErrorOnForbiddenName()
{
new TplBlock("kjsd54 65");
}
/**
* Test if error on blocks names WTF.
*
* @return void
*
* @expectedException UnexpectedValueException
*/
public function testIfErrorOnForbiddenNameAgain()
{
new TplBlock("kjsd54.5");
}
public function testIfRemoveNonGivenVarsWorks(){
$tpl = new TplBlock();
$resultWithReplace = $tpl
->doReplaceNonGivenVars()
->applyTplStr("Hello {{name}}");
$resultWithoutReplace = $tpl
->dontReplaceNonGivenVars()
->applyTplStr("Hello {{name}}");
$this->assertContains("name",$resultWithoutReplace);
$this->assertFalse(strpos("name", $resultWithReplace));
}
/**
* Test if error on non consistent tpl.
* @expectedException UnexpectedValueException
*/
public function testNonConsistentTemplate(){
$str = "
Bhah blah wpooie456
<!-- BEGIN bloc -->
have to be shown
<!-- BEGIN blocTwo -->
SHOULD be shown
<!-- END bloc -->
WONT to be shown
<!-- END blocTwo -->";
$tpl = new TplBlock();
$tpl->applyTplStr($str);
}
public function testNonConsistentTemplateNonStrictMode(){
$str = "
Bhah blah wpooie456
<!-- BEGIN bloc -->
have to be shown
<!-- BEGIN blocTwo -->
SHOULD be shown
<!-- END bloc -->
WONT to be shown
<!-- END blocTwo -->";
$tpl = new TplBlock();
$tpl-> dontStrictMode();
$this->assertContains("wpooie456",$tpl-> applyTplStr($str));
}
public function testaddSubBlocsDefinitions(){
$model = "
{{simpleVar}}
<!-- BEGIN bloc -->
{{bloc.simpleVar}}
<!-- BEGIN bloc.subBloc -->
{{bloc.subBloc.simpleVar}}
<!-- END bloc.subBloc -->
<!-- END bloc -->
";
$blocsDefinitions = array(
"simpleVar" => "hey",
"bloc" => array(
"simpleVar" => "Ho",
"subBloc" => array(
"simpleVar" => "HAAAAAA!"
)
)
);
$resultShouldBe = "
hey
Ho
HAAAAAA!
";
$tpl = new TplBlock();
$result = $tpl -> addSubBlocsDefinitions($blocsDefinitions)->applyTplStr($model);
$this->assertEquals($result, $resultShouldBe);
}
}