2018-03-19 22:32:58 +01:00
|
|
|
|
<?php
|
2018-03-23 22:55:23 +01:00
|
|
|
|
/**
|
|
|
|
|
* Gnieark’s 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/
|
|
|
|
|
*/
|
|
|
|
|
namespace TplBlockTest;
|
|
|
|
|
|
2018-03-19 22:32:58 +01:00
|
|
|
|
use PHPUnit\Framework\TestCase;
|
2018-03-23 22:55:23 +01:00
|
|
|
|
use TplBlock\TplBlock;
|
2018-03-19 22:32:58 +01:00
|
|
|
|
|
2018-03-23 22:55:23 +01:00
|
|
|
|
/**
|
|
|
|
|
* 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
|
|
|
|
|
{
|
2018-03-19 22:32:58 +01:00
|
|
|
|
/**
|
2018-03-23 22:55:23 +01:00
|
|
|
|
* 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);
|
2018-03-19 22:32:58 +01:00
|
|
|
|
}
|
|
|
|
|
|
2018-03-23 22:55:23 +01:00
|
|
|
|
/**
|
|
|
|
|
* 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);
|
2018-03-19 22:32:58 +01:00
|
|
|
|
}
|
2018-03-23 22:55:23 +01:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 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");
|
2018-03-20 19:03:06 +01:00
|
|
|
|
}
|
|
|
|
|
|
2018-03-23 22:55:23 +01:00
|
|
|
|
/**
|
|
|
|
|
* Test blocs.
|
|
|
|
|
*
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
|
|
|
|
public function testBlocs()
|
|
|
|
|
{
|
|
|
|
|
$model = "
|
2018-03-20 19:03:06 +01:00
|
|
|
|
Bhah blah wpooie456
|
|
|
|
|
<!-- BEGIN bloc -->
|
|
|
|
|
have to be shown
|
|
|
|
|
<!-- END bloc -->
|
|
|
|
|
<!-- BEGIN blocTwo -->
|
|
|
|
|
WONT to be shown
|
|
|
|
|
<!-- END blocTwo -->
|
|
|
|
|
";
|
2018-03-23 22:55:23 +01:00
|
|
|
|
|
|
|
|
|
$template = new TplBlock();
|
|
|
|
|
|
|
|
|
|
$actual = $template
|
|
|
|
|
->addSubBlock(new TplBlock("bloc"))
|
|
|
|
|
->applyTplStr($model);
|
|
|
|
|
|
|
|
|
|
$this->assertContains("have", $actual);
|
2018-03-26 21:57:35 +02:00
|
|
|
|
$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);
|
2018-03-23 22:55:23 +01:00
|
|
|
|
$this->assertFalse(strpos("WONT", $actual));
|
2018-03-20 19:03:06 +01:00
|
|
|
|
}
|
2018-03-19 22:32:58 +01:00
|
|
|
|
|
2018-03-21 19:03:56 +01:00
|
|
|
|
/**
|
2018-03-23 22:55:23 +01:00
|
|
|
|
* Test if error on blocks names WTF.
|
|
|
|
|
*
|
|
|
|
|
* @return void
|
|
|
|
|
*
|
|
|
|
|
* @expectedException UnexpectedValueException
|
|
|
|
|
*/
|
|
|
|
|
public function testIfErrorOnForbiddenName()
|
|
|
|
|
{
|
|
|
|
|
new TplBlock("kjsd54 65");
|
2018-03-21 19:03:56 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2018-03-23 22:55:23 +01:00
|
|
|
|
* Test if error on blocks names WTF.
|
|
|
|
|
*
|
|
|
|
|
* @return void
|
|
|
|
|
*
|
|
|
|
|
* @expectedException UnexpectedValueException
|
|
|
|
|
*/
|
|
|
|
|
public function testIfErrorOnForbiddenNameAgain()
|
|
|
|
|
{
|
|
|
|
|
new TplBlock("kjsd54.5");
|
2018-03-21 19:03:56 +01:00
|
|
|
|
}
|
2018-03-25 14:18:25 +02:00
|
|
|
|
|
2018-03-26 07:48:39 +02:00
|
|
|
|
public function testIfRemoveNonGivenVarsWorks(){
|
|
|
|
|
|
|
|
|
|
$tpl = new TplBlock();
|
|
|
|
|
$resultWithReplace = $tpl
|
|
|
|
|
->doReplaceNonGivenVars()
|
|
|
|
|
->applyTplStr("Hello {{name}}");
|
2018-03-25 14:18:25 +02:00
|
|
|
|
|
2018-03-26 07:48:39 +02:00
|
|
|
|
$resultWithoutReplace = $tpl
|
|
|
|
|
->dontReplaceNonGivenVars()
|
|
|
|
|
->applyTplStr("Hello {{name}}");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$this->assertContains("name",$resultWithoutReplace);
|
|
|
|
|
$this->assertFalse(strpos("name", $resultWithReplace));
|
|
|
|
|
|
|
|
|
|
|
2018-04-02 15:19:23 +02:00
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* 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));
|
|
|
|
|
|
2018-03-26 07:48:39 +02:00
|
|
|
|
}
|
2018-03-23 22:55:23 +01:00
|
|
|
|
}
|