/tests/unit/suites/libraries/cms/layout/JLayoutBaseTest.php

https://github.com/pjwiseman/joomla-cms · PHP · 216 lines · 105 code · 25 blank · 86 comment · 0 complexity · 3efe31ccc0b4dcfd24dea87869815496 MD5 · raw file

  1. <?php
  2. /**
  3. * @package Joomla.UnitTest
  4. * @subpackage Layout
  5. *
  6. * @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
  7. * @license GNU General Public License version 2 or later; see LICENSE
  8. */
  9. /**
  10. * Test class for JLayoutBase.
  11. */
  12. class JLayoutBaseTest extends PHPUnit_Framework_TestCase
  13. {
  14. /**
  15. * @var JLayoutBase
  16. */
  17. protected $layoutBase;
  18. /**
  19. * Sets up the test by instantiating JLayoutBase
  20. */
  21. protected function setUp()
  22. {
  23. $this->layoutBase = new JLayoutBase;
  24. }
  25. /**
  26. * @testdox JLayoutbase->setOptions() returns a JLayoutbase instance with empty parameter.
  27. *
  28. * @since 3.3.7
  29. */
  30. public function testJlayoutbaseSetOptionsReturnsAJlayoutbaseInstanceWithEmptyParameter()
  31. {
  32. $this->assertInstanceOf('JLayoutBase', $this->layoutBase->setOptions());
  33. }
  34. /**
  35. * @testdox JLayoutbase->setOptions() returns a JLayoutbase instance with JRegistry parameter.
  36. *
  37. * @since 3.3.7
  38. */
  39. public function testJlayoutbaseSetOptionsReturnsAJlayoutbaseInstanceWithJregistryParameter()
  40. {
  41. $this->assertInstanceOf('JLayoutBase', $this->layoutBase->setOptions(new JRegistry));
  42. }
  43. /**
  44. * @testdox JLayoutbase->setOptions() returns a JLayoutbase instance with an array parameter.
  45. *
  46. * @since 3.3.7
  47. */
  48. public function testJlayoutbaseSetOptionsReturnsAJlayoutbaseInstanceWithAnArrayParameter()
  49. {
  50. $this->assertInstanceOf('JLayoutBase', $this->layoutBase->setOptions(array()));
  51. }
  52. /**
  53. * @testdox JLayoutbase->getOptions() returns a JRegistry object when options parameter is empty.
  54. *
  55. * @since 3.3.7
  56. */
  57. public function testJlayoutbaseGetOptionsReturnsAJregistryObjectWhenOptionsParamaterIsEmpty()
  58. {
  59. $this->layoutBase->setOptions();
  60. $this->assertInstanceOf('JRegistry', $this->layoutBase->getOptions());
  61. $this->assertEmpty($this->layoutBase->getOptions()->toArray());
  62. }
  63. /**
  64. * @testdox JLayoutbase->getOptions() returns a JRegistry object when options parameter is an array.
  65. *
  66. * @since 3.3.7
  67. */
  68. public function testJlayoutbaseGetOptionsReturnsAJregistryObjectWhenOptionsParamaterIsAnArray()
  69. {
  70. $options = array();
  71. $this->layoutBase->setOptions($options);
  72. $this->assertInstanceOf('JRegistry', $this->layoutBase->getOptions());
  73. $this->assertEmpty($this->layoutBase->getOptions()->toArray());
  74. }
  75. /**
  76. * @testdox JLayoutbase->getOptions() returns a JRegistry object when options parameter is a JRegistry object.
  77. *
  78. * @since 3.3.7
  79. */
  80. public function testJlayoutbaseGetOptionsReturnsAJregistryObjectWhenOptionsParameterIsAJregistryObject()
  81. {
  82. $options = new JRegistry;
  83. $this->layoutBase->setOptions($options);
  84. $this->assertInstanceOf('JRegistry', $this->layoutBase->getOptions());
  85. $this->assertEmpty($this->layoutBase->getOptions()->toArray());
  86. }
  87. /**
  88. * @testdox JLayoutbase->getOptions() returns a JRegistry object value using an array.
  89. *
  90. * @since 3.3.7
  91. */
  92. public function testJlayoutbaseGetOptionsReturnsAJregistryObjectValueUsingAnArray()
  93. {
  94. $options = array('option' => 'value');
  95. $this->layoutBase->setOptions($options);
  96. $this->assertEquals('value', $this->layoutBase->getOptions()->get('option'));
  97. }
  98. /**
  99. * @testdox JLayoutbase->getOptions() returns a JRegistry object value using JRegistry.
  100. *
  101. * @since 3.3.7
  102. */
  103. public function testJlayoutbaseGetOptionsReturnsAJregistryObjectValueUsingJregistry()
  104. {
  105. $options = new JRegistry;
  106. $options->set('option', 'value');
  107. $this->layoutBase->setOptions($options);
  108. $this->assertEquals('value', $this->layoutBase->getOptions()->get('option'));
  109. }
  110. /**
  111. * @testdox JLayoutbase->resetOptions() and check options is empty.
  112. *
  113. * @since 3.3.7
  114. */
  115. public function testJlayoutbaseResetOptionsAndCheckOptionsIsEmpty()
  116. {
  117. $options = new JRegistry;
  118. $options->set('option', 'value');
  119. $this->layoutBase->setOptions($options);
  120. $this->assertEmpty($this->layoutBase->resetOptions()->getOptions()->toArray());
  121. }
  122. /**
  123. * Tests the escape method.
  124. *
  125. * @since 3.3.7
  126. */
  127. public function testEscapingSpecialCharactersIntoHtmlEntities()
  128. {
  129. $this->assertThat(
  130. $this->layoutBase->escape('&'),
  131. $this->equalTo('&amp;'),
  132. 'Test the ampersand is converted to HTML code'
  133. );
  134. $this->assertThat(
  135. $this->layoutBase->escape('"'),
  136. $this->equalTo('&quot;'),
  137. 'Test the double quote is converted to HTML code'
  138. );
  139. $this->assertThat(
  140. $this->layoutBase->escape("'"),
  141. $this->equalTo("'"),
  142. 'Test the single quote is not converted'
  143. );
  144. $this->assertThat(
  145. $this->layoutBase->escape("<a href='test'>Test</a>"),
  146. $this->equalTo("&lt;a href='test'&gt;Test&lt;/a&gt;"),
  147. 'Test the characters <> are not converted'
  148. );
  149. }
  150. /**
  151. * Test the adding of debug messages.
  152. *
  153. * @since 3.3.7
  154. */
  155. public function testAddOneDebugMessageToTheQueue()
  156. {
  157. $messages = count($this->layoutBase->getDebugMessages());
  158. $this->layoutBase->addDebugMessage('Unit test');
  159. $this->assertCount($messages + 1, $this->layoutBase->getDebugMessages());
  160. }
  161. /**
  162. * @testdox JLayoutBase->getDebugMessages() retrieves a list of debug messages in an array.
  163. *
  164. * @since 3.3.7
  165. */
  166. public function testRetrievingTheListOfDebugMessagesIsAnArray()
  167. {
  168. $this->assertInternalType('array', $this->layoutBase->getDebugMessages());
  169. }
  170. /**
  171. * @testdox JLayoutBase->renderDebugMessages() returns string of messages separated by newline character.
  172. *
  173. * @since 3.3.7
  174. */
  175. public function testRenderDebugMessageReturnsStringOfMessagesSeparatedByNewlineCharacter()
  176. {
  177. $this->layoutBase->addDebugMessage('Debug message 1');
  178. $this->assertEquals("Debug message 1", $this->layoutBase->renderDebugMessages());
  179. $this->layoutBase->addDebugMessage('Debug message 2');
  180. $this->assertEquals("Debug message 1\nDebug message 2", $this->layoutBase->renderDebugMessages());
  181. }
  182. /**
  183. * @testdox JLayoutBase->render() returns an empty string.
  184. *
  185. * @since 3.3.7
  186. */
  187. public function testRenderReturnsAnEmptyString()
  188. {
  189. $this->assertEquals('', $this->layoutBase->render('Data'), 'JLayoutBase::render does not render an output');
  190. }
  191. }