TemplateRendererTest.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. /*
  3. * This file is part of the php-phantomjs.
  4. *
  5. * For the full copyright and license information, please view the LICENSE
  6. * file that was distributed with this source code.
  7. */
  8. namespace JonnyW\PhantomJs\Tests\Integration\Template;
  9. use JonnyW\PhantomJs\Test\TestCase;
  10. use JonnyW\PhantomJs\Template\TemplateRenderer;
  11. /**
  12. * PHP PhantomJs
  13. *
  14. * @author Jon Wenmoth <contact@jonnyw.me>
  15. */
  16. class TemplateRendererTest extends TestCase
  17. {
  18. /** +++++++++++++++++++++++++++++++++++ **/
  19. /** ++++++++++++++ TESTS ++++++++++++++ **/
  20. /** +++++++++++++++++++++++++++++++++++ **/
  21. /**
  22. * Test render injects single parameter
  23. * into template.
  24. *
  25. * @access public
  26. * @return void
  27. */
  28. public function testRenderInjectsSingleParameterIntoTemplate()
  29. {
  30. $template = 'var param = "{{ test }}"';
  31. $renderer = $this->getInjectedTemplateRenderer();
  32. $result = $renderer->render($template, array('test' => 'data'));
  33. $this->assertSame('var param = "data"', $result);
  34. }
  35. /**
  36. * Test render injects multiple parameters
  37. * into template.
  38. *
  39. * @access public
  40. * @return void
  41. */
  42. public function testRenderInjectsMultipleParametersIntoTemplates()
  43. {
  44. $template = 'var param = "{{ test }}", var param2 = "{{ test2 }}"';
  45. $renderer = $this->getInjectedTemplateRenderer();
  46. $result = $renderer->render($template, array('test' => 'data', 'test2' => 'more data'));
  47. $this->assertSame('var param = "data", var param2 = "more data"', $result);
  48. }
  49. /**
  50. * Test render injects parameter into
  51. * template using object method.
  52. *
  53. * @access public
  54. * @return void
  55. */
  56. public function testRenderInjectsParameterIntoTemplateUsingObjectMethod()
  57. {
  58. $template = 'var param = {{ request.getTimeout() }}';
  59. $request = $this->getRequest();
  60. $request->expects($this->any())
  61. ->method('getTimeout')
  62. ->will($this->returnValue(5000));
  63. $renderer = $this->getInjectedTemplateRenderer();
  64. $result = $renderer->render($template, array('request' => $request));
  65. $this->assertSame('var param = 5000', $result);
  66. }
  67. /**
  68. * Test render injects parameter into
  69. * template using object method
  70. * with parameter.
  71. *
  72. * @access public
  73. * @return void
  74. */
  75. public function testRenderInjectsParameterIntoTemplateUsingObjectMethodWithParameter()
  76. {
  77. $template = 'var param = {{ request.getHeaders("json") }}';
  78. $request = $this->getRequest();
  79. $request->expects($this->once())
  80. ->method('getHeaders')
  81. ->with($this->identicalTo('json'));
  82. $renderer = $this->getInjectedTemplateRenderer();
  83. $renderer->render($template, array('request' => $request));
  84. }
  85. /** +++++++++++++++++++++++++++++++++++ **/
  86. /** ++++++++++ TEST ENTITIES ++++++++++ **/
  87. /** +++++++++++++++++++++++++++++++++++ **/
  88. /**
  89. * Get template renderer instance.
  90. *
  91. * @param \Twig_Environment $twig
  92. * @return \JonnyW\PhantomJs\Message\TemplateRenderer
  93. */
  94. protected function getTemplateRenderer(\Twig_Environment $twig)
  95. {
  96. $templateRenderer = new TemplateRenderer($twig);
  97. return $templateRenderer;
  98. }
  99. /**
  100. * Get template renderer instance
  101. * injected with dependencies.
  102. *
  103. * @access protected
  104. * @return \JonnyW\PhantomJs\Message\TemplateRenderer
  105. */
  106. protected function getInjectedTemplateRenderer()
  107. {
  108. $twig = $this->getContainer()->get('phantomjs.twig.environment');
  109. $templateRenderer = $this->getTemplateRenderer($twig);
  110. return $templateRenderer;
  111. }
  112. /** +++++++++++++++++++++++++++++++++++ **/
  113. /** ++++++++++ MOCKS / STUBS ++++++++++ **/
  114. /** +++++++++++++++++++++++++++++++++++ **/
  115. /**
  116. * Get mock request instance.
  117. *
  118. * @access protected
  119. * @return \JonnyW\PhantomJs\Message\RequestInterface
  120. */
  121. protected function getRequest()
  122. {
  123. $mockRequest = $this->getMock('\JonnyW\PhantomJs\Message\RequestInterface');
  124. return $mockRequest;
  125. }
  126. }