* @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 * @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 have to be shown WONT to be shown "; $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 have to be shown WONT to be shown "; $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 have to be shown SHOULD be shown WONT to be shown "; $tpl = new TplBlock(); $tpl->applyTplStr($str); } public function testNonConsistentTemplateNonStrictMode(){ $str = " Bhah blah wpooie456 have to be shown SHOULD be shown WONT to be shown "; $tpl = new TplBlock(); $tpl-> dontStrictMode(); $this->assertContains("wpooie456",$tpl-> applyTplStr($str)); } public function testaddSubBlocsDefinitions(){ $model = " {{simpleVar}} {{bloc.simpleVar}} {{bloc.subBloc.simpleVar}} "; $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); } }