2
0

ElementTest.php 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <?php
  2. /**
  3. * Zend Framework
  4. *
  5. * LICENSE
  6. *
  7. * This source file is subject to the new BSD license that is bundled
  8. * with this package in the file LICENSE.txt.
  9. * It is also available through the world-wide-web at this URL:
  10. * http://framework.zend.com/license/new-bsd
  11. * If you did not receive a copy of the license and are unable to
  12. * obtain it through the world-wide-web, please send an email
  13. * to license@zend.com so we can send you a copy immediately.
  14. *
  15. * @category ZendX
  16. * @package ZendX_JQuery
  17. * @subpackage View
  18. * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
  19. * @license http://framework.zend.com/license/new-bsd New BSD License
  20. * @version $Id: AllTests.php 11232 2008-09-05 08:16:33Z beberlei $
  21. */
  22. require_once dirname(__FILE__)."/../../../TestHelper.php";
  23. if (!defined('PHPUnit_MAIN_METHOD')) {
  24. define('PHPUnit_MAIN_METHOD', 'ZendX_JQuery_Form_ElementTest::main');
  25. }
  26. require_once "Zend/Registry.php";
  27. require_once "Zend/View.php";
  28. require_once "Zend/Form/Element.php";
  29. require_once "Zend/Form/SubForm.php";
  30. require_once "Zend/Form/Decorator/Description.php";
  31. require_once "Zend/Json.php";
  32. require_once "ZendX/JQuery.php";
  33. require_once "ZendX/JQuery/Form.php";
  34. require_once "ZendX/JQuery/View/Helper/JQuery.php";
  35. require_once "ZendX/JQuery/Form/Element/Spinner.php";
  36. require_once "ZendX/JQuery/Form/Element/Slider.php";
  37. require_once "ZendX/JQuery/Form/Element/ColorPicker.php";
  38. require_once "ZendX/JQuery/Form/Element/DatePicker.php";
  39. require_once "ZendX/JQuery/Form/Element/AutoComplete.php";
  40. require_once "Zend/Form/Decorator/ViewHelper.php";
  41. require_once "ZendX/JQuery/Form/Decorator/UiWidgetElement.php";
  42. class ZendX_JQuery_Form_ElementTest extends PHPUnit_Framework_TestCase
  43. {
  44. public function setUp()
  45. {
  46. Zend_Registry::_unsetInstance();
  47. }
  48. public function testElementSetGetJQueryParam()
  49. {
  50. $spinner = new ZendX_JQuery_Form_Element_Spinner('spinnerElem');
  51. $spinner->setJQueryParam("foo", "baz");
  52. $this->assertEquals("baz", $spinner->getJQueryParam("foo"));
  53. $spinner->setJQueryParam("foo", "bar");
  54. $spinner->setJQueryParam("bar", array());
  55. $this->assertEquals("bar", $spinner->getJQueryParam("foo"));
  56. $this->assertEquals(array(), $spinner->getJQueryParam("bar"));
  57. }
  58. public function testElementSetGetMassJQueryParams()
  59. {
  60. $spinner = new ZendX_JQuery_Form_Element_Spinner('spinnerElem');
  61. $spinner->setJQueryParams(array("foo" => "baz", "bar" => "baz"));
  62. $this->assertEquals(array("foo" => "baz", "bar" => "baz"), $spinner->getJQueryParams());
  63. $spinner->setJQueryParams(array("foo" => "bar"));
  64. $this->assertEquals(array("foo" => "bar", "bar" => "baz"), $spinner->getJQueryParams());
  65. }
  66. public function testElementsHaveUiWidgetDecorator()
  67. {
  68. $spinner = new ZendX_JQuery_Form_Element_Spinner('spinnerElem');
  69. $this->assertTrue($spinner->getDecorator('UiWidgetElement') !== false);
  70. $slider = new ZendX_JQuery_Form_Element_Slider('sliderElem');
  71. $this->assertTrue($slider->getDecorator('UiWidgetElement') !== false);
  72. $cp = new ZendX_JQuery_Form_Element_ColorPicker('cpElem');
  73. $this->assertTrue($cp->getDecorator('UiWidgetElement') !== false);
  74. $dp = new ZendX_JQuery_Form_Element_DatePicker('dpElem');
  75. $this->assertTrue($dp->getDecorator('UiWidgetElement') !== false);
  76. $ac = new ZendX_JQuery_Form_Element_AutoComplete('acElem');
  77. $this->assertTrue($ac->getDecorator('UiWidgetElement') !== false);
  78. }
  79. public function testElementsEnableJQueryViewPath()
  80. {
  81. $view = new Zend_View();
  82. $spinner = new ZendX_JQuery_Form_Element_Spinner("spinner1");
  83. $this->assertFalse( false !== $view->getPluginLoader('helper')->getPaths('ZendX_JQuery_View_Helper'));
  84. $spinner->setView($view);
  85. $this->assertTrue( false !== $view->getPluginLoader('helper')->getPaths('ZendX_JQuery_View_Helper'));
  86. }
  87. /**
  88. * @group ZF-4694
  89. */
  90. public function testJQueryElementWithOnlyViewHelperIsNotAllowedToDieZf4694()
  91. {
  92. $view = new Zend_View();
  93. $spinner = new ZendX_JQuery_Form_Element_Spinner("spinner1");
  94. $spinner->setDecorators(array('ViewHelper'));
  95. $spinner->setView($view);
  96. try {
  97. $spinner->render();
  98. $this->fail();
  99. } catch(ZendX_JQuery_Form_Exception $e) {
  100. // success here
  101. } catch(Exception $e) {
  102. $this->fail();
  103. }
  104. }
  105. /**
  106. * @group ZF-5125
  107. */
  108. public function testJQueryElementHasToImplementMarkerInterface()
  109. {
  110. $view = new Zend_View();
  111. $spinner = new ZendX_JQuery_Form_Element_Spinner("spinner1");
  112. $spinner->setDecorators(array('ViewHelper'));
  113. $spinner->setView($view);
  114. try {
  115. $spinner->render();
  116. $this->fail();
  117. } catch(ZendX_JQuery_Form_Exception $e) {
  118. // success here
  119. }
  120. $spinner->setDecorators(array('UiWidgetElement'));
  121. try {
  122. $spinner->render();
  123. // success here
  124. } catch(ZendX_JQuery_Form_Exception $e) {
  125. $this->fail();
  126. }
  127. }
  128. /**
  129. * @group ZF-4859
  130. */
  131. public function testAutocompleteDoesNotDoubleArrayEncodeDataJsonField()
  132. {
  133. $view = new Zend_View();
  134. $form = new ZendX_JQuery_Form();
  135. $dataSource = array(0 => 'John Doe');
  136. $lastname = new ZendX_JQuery_Form_Element_AutoComplete("Lastname", array('label' => 'Lastname'));
  137. $form->addElement($lastname);
  138. $form->Lastname->setJQueryParam('source', $dataSource);
  139. Zend_Json::$useBuiltinEncoderDecoder = true;
  140. $output = $form->render($view);
  141. $this->assertEquals(
  142. array('$("#Lastname").autocomplete({"source":["John Doe"]});'),
  143. $view->jQuery()->getOnLoadActions()
  144. );
  145. Zend_Json::$useBuiltinEncoderDecoder = false;
  146. $output = $form->render($view);
  147. $this->assertEquals(
  148. array('$("#Lastname").autocomplete({"source":["John Doe"]});'),
  149. $view->jQuery()->getOnLoadActions()
  150. );
  151. }
  152. /**
  153. * @group ZF-5043
  154. */
  155. public function testFormWithoutIdButSubformsProducesArrayNotationWhichWontWork()
  156. {
  157. $view = new Zend_View();
  158. $form = new ZendX_JQuery_Form();
  159. $datePicker = new ZendX_JQuery_Form_Element_DatePicker("dp1");
  160. $subform = new Zend_Form_SubForm();
  161. $subform->addElement($datePicker);
  162. $form->addSubForm($subform, "sf1");
  163. $form->setIsArray(true);
  164. $form = $form->render($view);
  165. $jquery = $view->jQuery()->__toString();
  166. $this->assertContains('sf1[dp1]', $form);
  167. $this->assertNotContains('$("#sf1[dp1]")', $jquery);
  168. }
  169. /**
  170. * @group ZF-6979
  171. */
  172. public function testDatePickerWithDescriptionDecorator()
  173. {
  174. $view = new Zend_View();
  175. $datePicker = new ZendX_JQuery_Form_Element_DatePicker("dp1");
  176. $datePicker->addDecorator(new Zend_Form_Decorator_Description());
  177. $datePicker->setDescription("foo");
  178. $html = $datePicker->render($view);
  179. $this->assertContains('<p class="description">foo</p>', $html);
  180. }
  181. public function testGetDefaultDecorators()
  182. {
  183. $widget = new ZendX_JQuery_Form_Element_DatePicker("dp1");;
  184. $decorators = $widget->getDecorators();
  185. $this->assertEquals(5, count($decorators));
  186. $this->assertType('ZendX_JQuery_Form_Decorator_UiWidgetElement', $decorators['ZendX_JQuery_Form_Decorator_UiWidgetElement']);
  187. $this->assertType('Zend_Form_Decorator_Errors', $decorators['Zend_Form_Decorator_Errors']);
  188. $this->assertType('Zend_Form_Decorator_Description', $decorators['Zend_Form_Decorator_Description']);
  189. $this->assertType('Zend_Form_Decorator_HtmlTag', $decorators['Zend_Form_Decorator_HtmlTag']);
  190. $this->assertType('Zend_Form_Decorator_Label', $decorators['Zend_Form_Decorator_Label']);
  191. }
  192. }
  193. if (PHPUnit_MAIN_METHOD == 'ZendX_JQuery_Form_ElementTest::main') {
  194. ZendX_JQuery_Form_ElementTest::main();
  195. }