PageRenderTime 27ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/tests/SimpleTemplateTest/SimpeTemplateTest.php

https://gitlab.com/php.bjoernbartels.earth/simpletemplate
PHP | 275 lines | 217 code | 49 blank | 9 comment | 0 complexity | 8e2292a15c33deaed16233e6c913ea8e MD5 | raw file
  1. <?php
  2. /**
  3. * simple template class tests
  4. *
  5. * @package SimpleTemplate
  6. * @author Björn Bartels <coding@bjoernbartels.earth>
  7. * @link https://gitlab.bjoernbartels.earth/groups/zf2
  8. * @license http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0
  9. * @copyright copyright (c) 2016 Björn Bartels <coding@bjoernbartels.earth>
  10. */
  11. namespace SimpleTemplateTest;
  12. use PHPUnit_Framework_TestCase as TestCase;
  13. use SimpleTemplate\SimpleTemplate;
  14. class SimpleTemplateTest extends TestCase
  15. {
  16. public function testInstantiateObject()
  17. {
  18. try {
  19. $tpl = new SimpleTemplate();
  20. $className = get_class($tpl);
  21. } catch (Exception $e) {
  22. $tpl = null;
  23. $className = null;
  24. }
  25. $this->assertNotNull($tpl);
  26. $this->assertNotNull($className);
  27. $this->assertInstanceOf("SimpleTemplate\SimpleTemplateAbstract", $tpl);
  28. $this->assertInstanceOf("SimpleTemplate\SimpleTemplateInterface", $tpl);
  29. }
  30. public function testInstantiateObjectSetStaticTag()
  31. {
  32. try {
  33. $tpl = new SimpleTemplate(array("static" => "$[%s]"));
  34. } catch (Exception $e) {
  35. $tpl = null;
  36. }
  37. $this->assertNotNull($tpl);
  38. $this->assertEquals("$[%s]", $tpl->tags["static"]);
  39. }
  40. public function testInstantiateObjectSetBlockTags()
  41. {
  42. try {
  43. $tpl = new SimpleTemplate(array("start" => "<templateblock:begin>", "end" => "<templateblock:end>"));
  44. } catch (Exception $e) {
  45. $tpl = null;
  46. }
  47. $this->assertNotNull($tpl);
  48. $this->assertEquals("<templateblock:begin>", $tpl->tags["start"]);
  49. $this->assertEquals("<templateblock:end>", $tpl->tags["end"]);
  50. }
  51. public function testSetGettextDomain()
  52. {
  53. $tpl = new SimpleTemplate();
  54. $tpl->setDomain("my-translations");
  55. $this->assertEquals("my-translations", $tpl->_sDomain);
  56. }
  57. public function testGetGettextDomain()
  58. {
  59. $tpl = new SimpleTemplate();
  60. $tpl->setDomain("my-translations");
  61. $this->assertEquals("my-translations", $tpl->getDomain());
  62. }
  63. public function testSetStaticReplacement()
  64. {
  65. $tpl = new SimpleTemplate();
  66. $tpl->set("s", "MY-VAR", "my-value");
  67. $this->assertContains("{MY-VAR}", $tpl->needles);
  68. $this->assertContains("my-value", $tpl->replacements);
  69. $this->assertEquals("{MY-VAR}", $tpl->needles[0]);
  70. $this->assertEquals("my-value", $tpl->replacements[0]);
  71. $tpl->set("s", "MY-OTHER-VAR", "my-other-value");
  72. $this->assertContains("{MY-OTHER-VAR}", $tpl->needles);
  73. $this->assertContains("my-other-value", $tpl->replacements);
  74. }
  75. public function testNextIncreasesInternalDynamicReplacementsCounter()
  76. {
  77. $tpl = new SimpleTemplate();
  78. $this->assertEquals(0, $tpl->dynamicContent);
  79. $tpl->next();
  80. $this->assertEquals(1, $tpl->dynamicContent);
  81. }
  82. public function testSetFirstDynamicReplacementsCycle()
  83. {
  84. $tpl = new SimpleTemplate();
  85. $tpl->set("d", "MY-VAR", "value-1");
  86. $this->assertContains("{MY-VAR}", $tpl->dynamicNeedles[$tpl->dynamicContent]);
  87. $this->assertContains("value-1", $tpl->dynamicReplacements[$tpl->dynamicContent]);
  88. $this->assertEquals("{MY-VAR}", $tpl->dynamicNeedles[$tpl->dynamicContent][0]);
  89. $this->assertEquals("value-1", $tpl->dynamicReplacements[$tpl->dynamicContent][0]);
  90. $tpl->set("d", "MY-OTHER-VAR", "other-value-1");
  91. $this->assertContains("{MY-OTHER-VAR}", $tpl->dynamicNeedles[$tpl->dynamicContent]);
  92. $this->assertContains("other-value-1", $tpl->dynamicReplacements[$tpl->dynamicContent]);
  93. $this->assertEquals("{MY-OTHER-VAR}", $tpl->dynamicNeedles[$tpl->dynamicContent][1]);
  94. $this->assertEquals("other-value-1", $tpl->dynamicReplacements[$tpl->dynamicContent][1]);
  95. }
  96. public function testSetFirstAndNextDynamicReplacementsCycle()
  97. {
  98. $tpl = new SimpleTemplate();
  99. $tpl->set("d", "MY-VAR", "value-1");
  100. $this->assertContains("{MY-VAR}", $tpl->dynamicNeedles[$tpl->dynamicContent]);
  101. $this->assertContains("value-1", $tpl->dynamicReplacements[$tpl->dynamicContent]);
  102. $this->assertEquals("{MY-VAR}", $tpl->dynamicNeedles[$tpl->dynamicContent][0]);
  103. $this->assertEquals("value-1", $tpl->dynamicReplacements[$tpl->dynamicContent][0]);
  104. $tpl->next();
  105. $tpl->set("d", "MY-VAR", "value-2");
  106. $this->assertContains("{MY-VAR}", $tpl->dynamicNeedles[$tpl->dynamicContent]);
  107. $this->assertEquals("{MY-VAR}", $tpl->dynamicNeedles[$tpl->dynamicContent][0]);
  108. $this->assertContains("value-2", $tpl->dynamicReplacements[$tpl->dynamicContent]);
  109. $this->assertEquals("value-2", $tpl->dynamicReplacements[$tpl->dynamicContent][0]);
  110. }
  111. public function testResetReplacements()
  112. {
  113. $tpl = new SimpleTemplate();
  114. $tpl->set("s", "MY-VAR", "my-value");
  115. $tpl->set("d", "MY-VAR", "value-1")
  116. ->next()
  117. ->set("d", "MY-VAR", "value-2");
  118. $tpl->reset();
  119. $this->assertEquals(0, $tpl->dynamicContent);
  120. $this->assertEmpty($tpl->needles);
  121. $this->assertEmpty($tpl->replacements);
  122. $this->assertEmpty($tpl->dynamicNeedles);
  123. $this->assertEmpty($tpl->dynamicReplacements);
  124. }
  125. public function testReplaceStaticNeedles()
  126. {
  127. $tpl = new SimpleTemplate();
  128. $tpl->set("s", "MY-VAR", "my-value");
  129. $template = "... {MY-VAR} ...";
  130. $generatedContent = $tpl->generate($template, true);
  131. $this->assertContains("my-value", $generatedContent);
  132. }
  133. public function testReplaceDynamicNeedles()
  134. {
  135. $tpl = new SimpleTemplate();
  136. $tpl->set("d", "MY-VAR", "value-1")
  137. ->next()
  138. ->set("d", "MY-VAR", "value-2")
  139. ->next();
  140. $template = "...<!-- BEGIN:BLOCK --> {MY-VAR} <!-- END:BLOCK -->...";
  141. $generatedContent = $tpl->generate($template, true);
  142. $this->assertContains("value-1", $generatedContent);
  143. $this->assertContains("value-2", $generatedContent);
  144. }
  145. public function testReplaceStaticAndDynamicNeedles()
  146. {
  147. $tpl = new SimpleTemplate();
  148. $tpl->set("s", "MY-VAR", "my-value");
  149. $tpl->set("d", "MY-DYN-VAR", "value-1")
  150. ->next()
  151. ->set("d", "MY-DYN-VAR", "value-2")
  152. ->next();
  153. $template = "... {MY-VAR} <!-- BEGIN:BLOCK --> {MY-DYN-VAR} <!-- END:BLOCK -->...";
  154. $generatedContent = $tpl->generate($template, true);
  155. $this->assertContains("my-value", $generatedContent);
  156. $this->assertContains("value-1", $generatedContent);
  157. $this->assertContains("value-2", $generatedContent);
  158. }
  159. public function testReplacingNeedlesPreservesPHPTags()
  160. {
  161. $tpl = new SimpleTemplate();
  162. $tpl->set("s", "MY-VAR", "my-value");
  163. $tpl->set("d", "MY-DYN-VAR", "value-1")
  164. ->next()
  165. ->set("d", "MY-DYN-VAR", "value-2")
  166. ->next();
  167. $template = "... {MY-VAR} <?php echo 'hello world'; ?> <!-- BEGIN:BLOCK --> {MY-DYN-VAR} <!-- END:BLOCK -->...";
  168. $generatedContent = $tpl->generate($template, true);
  169. $this->assertContains("my-value", $generatedContent);
  170. $this->assertContains("value-1", $generatedContent);
  171. $this->assertContains("value-2", $generatedContent);
  172. $this->assertContains("<?php echo 'hello world'; ?>", $generatedContent);
  173. }
  174. public function testApplyTranslationFunctionInTemplate()
  175. {
  176. $tpl = new SimpleTemplate();
  177. $tpl->set("s", "MY-VAR", "my-value");
  178. $tpl->set("d", "MY-DYN-VAR", "value-1")
  179. ->next()
  180. ->set("d", "MY-DYN-VAR", "value-2")
  181. ->next();
  182. $template = "... {MY-VAR} ... i18n('hello world') ... <!-- BEGIN:BLOCK --> {MY-DYN-VAR} <!-- END:BLOCK --> translate('good bye world') ...";
  183. $generatedContent = $tpl->generate($template, true);
  184. $this->assertContains("my-value", $generatedContent);
  185. $this->assertContains("value-1", $generatedContent);
  186. $this->assertContains("value-2", $generatedContent);
  187. $this->assertContains("hello world", $generatedContent);
  188. $this->assertContains("good bye world", $generatedContent);
  189. $this->assertNotContains("i18n", $generatedContent);
  190. $this->assertNotContains("translate", $generatedContent);
  191. }
  192. public function testEncodingSetsHTMLMETATag()
  193. {
  194. $tpl = new SimpleTemplate();
  195. $tpl->setEncoding("utf-8");
  196. $tpl->set("s", "MY-VAR", "my-value");
  197. $template = "... {MY-VAR} ...";
  198. $generatedContent = $tpl->generate($template, true);
  199. $this->assertContains("my-value", $generatedContent);
  200. $this->assertContains('<meta http-equiv="Content-Type" content="text/html; charset='.$tpl->_encoding.'">', $generatedContent);
  201. }
  202. public function testOutputToStdout()
  203. {
  204. $tpl = new SimpleTemplate();
  205. $tpl->set("s", "MY-VAR", "my-value");
  206. $template = "... {MY-VAR} ...";
  207. ob_start();
  208. $tpl->generate($template);
  209. $generatedContent = ob_get_clean();
  210. $this->assertContains("... my-value ...", $generatedContent);
  211. }
  212. public function testGenerateFromTemplateFile()
  213. {
  214. $tpl = new SimpleTemplate();
  215. $tpl->set("s", "MY-VAR", "my-value");
  216. $tpl->set("d", "MY-DYN-VAR", "value-1")
  217. ->next()
  218. ->set("d", "MY-DYN-VAR", "value-2")
  219. ->next();
  220. $templateFilepath = $GLOBALS["projectRoot"] . "/tests/data/file.tpl";
  221. $generatedContent = $tpl->generate($templateFilepath, true);
  222. $this->assertContains("my-value", $generatedContent);
  223. $this->assertContains("value-1", $generatedContent);
  224. $this->assertContains("value-2", $generatedContent);
  225. }
  226. }