RainTPL.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. class RainTPLTest extends PHPUnit_Framework_TestCase
  3. {
  4. private static $data = '{"iv":"EN39/wd5Nk8HAiSG2K5AsQ","salt":"QKN1DBXe5PI","ct":"8hA83xDdXjD7K2qfmw5NdA"}';
  5. private static $error = 'foo bar';
  6. private static $expire = array(
  7. '5min' => '5 minutes',
  8. '1hour' => '1 hour',
  9. 'never' => 'Never',
  10. );
  11. private static $expire_default = '1hour';
  12. private static $version = 'Version 1.2.3';
  13. private $_content;
  14. public function setUp()
  15. {
  16. /* Setup Routine */
  17. $page = new RainTPL;
  18. $page::configure(array('cache_dir' => 'tmp/'));
  19. $page = new RainTPL;
  20. // We escape it here because ENT_NOQUOTES can't be used in RainTPL templates.
  21. $page->assign('CIPHERDATA', htmlspecialchars(self::$data, ENT_NOQUOTES));
  22. $page->assign('ERRORMESSAGE', self::$error);
  23. $page->assign('VERSION', self::$version);
  24. $page->assign('BURNAFTERREADINGSELECTED', false);
  25. $page->assign('OPENDISCUSSION', false);
  26. $page->assign('SYNTAXHIGHLIGHTING', true);
  27. $page->assign('EXPIRE', self::$expire);
  28. $page->assign('EXPIREDEFAULT', self::$expire_default);
  29. ob_start();
  30. $page->draw('page');
  31. $this->_content = ob_get_contents();
  32. // run a second time from cache
  33. $page->cache('page');
  34. $page->draw('page');
  35. ob_end_clean();
  36. }
  37. public function tearDown()
  38. {
  39. /* Tear Down Routine */
  40. helper::rmdir(PATH . 'tmp');
  41. }
  42. public function testTemplateRendersCorrectly()
  43. {
  44. $this->assertTag(
  45. array(
  46. 'id' => 'cipherdata',
  47. 'content' => htmlspecialchars(self::$data, ENT_NOQUOTES)
  48. ),
  49. $this->_content,
  50. 'outputs data correctly'
  51. );
  52. $this->assertTag(
  53. array(
  54. 'id' => 'errormessage',
  55. 'content' => self::$error
  56. ),
  57. $this->_content,
  58. 'outputs error correctly'
  59. );
  60. $this->assertTag(
  61. array(
  62. 'id' => 'opendiscussion',
  63. 'attributes' => array(
  64. 'disabled' => 'disabled'
  65. ),
  66. ),
  67. $this->_content,
  68. 'disables discussions if configured'
  69. );
  70. // testing version number in JS address, since other instances may not be present in different templates
  71. $this->assertTag(
  72. array(
  73. 'tag' => 'script',
  74. 'attributes' => array(
  75. 'src' => 'js/zerobin.js?' . rawurlencode(self::$version)
  76. ),
  77. ),
  78. $this->_content,
  79. 'outputs version correctly'
  80. );
  81. }
  82. }