MootoolsEngineHelperTest.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372
  1. <?php
  2. /**
  3. * MooEngineTestCase
  4. *
  5. *
  6. *
  7. * PHP 5
  8. *
  9. * CakePHP : Rapid Development Framework <http://www.cakephp.org/>
  10. * Copyright 2005-2011, Cake Software Foundation, Inc.
  11. * 1785 E. Sahara Avenue, Suite 490-204
  12. * Las Vegas, Nevada 89104
  13. *
  14. * Licensed under The MIT License
  15. * Redistributions of files must retain the above copyright notice.
  16. *
  17. * @copyright Copyright 2005-2011, Cake Software Foundation, Inc.
  18. * @link http://cakephp.org CakePHP Project
  19. * @package Cake.Test.Case.View.Helper
  20. * @package Cake.Test.Case.View.Helper
  21. * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
  22. */
  23. App::uses('View', 'View');
  24. App::uses('HtmlHelper', 'View/Helper');
  25. App::uses('JsHelper', 'View/Helper');
  26. App::uses('MootoolsEngineHelper', 'View/Helper');
  27. class MootoolsEngineHelperTest extends CakeTestCase {
  28. /**
  29. * setUp
  30. *
  31. * @return void
  32. */
  33. public function setUp() {
  34. parent::setUp();
  35. $controller = null;
  36. $this->View = $this->getMock('View', array('addScript'), array(&$controller));
  37. $this->Moo = new MootoolsEngineHelper($this->View);
  38. }
  39. /**
  40. * tearDown
  41. *
  42. * @return void
  43. */
  44. public function tearDown() {
  45. parent::tearDown();
  46. unset($this->Moo);
  47. }
  48. /**
  49. * test selector method
  50. *
  51. * @return void
  52. */
  53. public function testSelector() {
  54. $result = $this->Moo->get('#content');
  55. $this->assertEqual($result, $this->Moo);
  56. $this->assertEqual($this->Moo->selection, '$("content")');
  57. $result = $this->Moo->get('a .remove');
  58. $this->assertEqual($result, $this->Moo);
  59. $this->assertEqual($this->Moo->selection, '$$("a .remove")');
  60. $result = $this->Moo->get('document');
  61. $this->assertEqual($result, $this->Moo);
  62. $this->assertEqual($this->Moo->selection, "$(document)");
  63. $result = $this->Moo->get('window');
  64. $this->assertEqual($result, $this->Moo);
  65. $this->assertEqual($this->Moo->selection, "$(window)");
  66. $result = $this->Moo->get('ul');
  67. $this->assertEqual($result, $this->Moo);
  68. $this->assertEqual($this->Moo->selection, '$$("ul")');
  69. $result = $this->Moo->get('#some_long-id.class');
  70. $this->assertEqual($result, $this->Moo);
  71. $this->assertEqual($this->Moo->selection, '$$("#some_long-id.class")');
  72. }
  73. /**
  74. * test event binding
  75. *
  76. * @return void
  77. */
  78. public function testEvent() {
  79. $this->Moo->get('#myLink');
  80. $result = $this->Moo->event('click', 'doClick', array('wrap' => false));
  81. $expected = '$("myLink").addEvent("click", doClick);';
  82. $this->assertEqual($expected, $result);
  83. $result = $this->Moo->event('click', 'this.setStyle("display", "");', array('stop' => false));
  84. $expected = '$("myLink").addEvent("click", function (event) {this.setStyle("display", "");});';
  85. $this->assertEqual($expected, $result);
  86. $result = $this->Moo->event('click', 'this.setStyle("display", "none");');
  87. $expected = "\$(\"myLink\").addEvent(\"click\", function (event) {event.stop();\nthis.setStyle(\"display\", \"none\");});";
  88. $this->assertEqual($expected, $result);
  89. }
  90. /**
  91. * test dom ready event creation
  92. *
  93. * @return void
  94. */
  95. public function testDomReady() {
  96. $result = $this->Moo->domReady('foo.name = "bar";');
  97. $expected = 'window.addEvent("domready", function (event) {foo.name = "bar";});';
  98. $this->assertEqual($expected, $result);
  99. }
  100. /**
  101. * test Each method
  102. *
  103. * @return void
  104. */
  105. public function testEach() {
  106. $this->Moo->get('#foo');
  107. $result = $this->Moo->each('item.setStyle("display", "none");');
  108. $expected = '$("foo").each(function (item, index) {item.setStyle("display", "none");});';
  109. $this->assertEqual($expected, $result);
  110. }
  111. /**
  112. * test Effect generation
  113. *
  114. * @return void
  115. */
  116. public function testEffect() {
  117. $this->Moo->get('#foo');
  118. $result = $this->Moo->effect('show');
  119. $expected = '$("foo").setStyle("display", "");';
  120. $this->assertEqual($expected, $result);
  121. $result = $this->Moo->effect('hide');
  122. $expected = '$("foo").setStyle("display", "none");';
  123. $this->assertEqual($expected, $result);
  124. $result = $this->Moo->effect('fadeIn');
  125. $expected = '$("foo").fade("in");';
  126. $this->assertEqual($expected, $result);
  127. $result = $this->Moo->effect('fadeOut');
  128. $expected = '$("foo").fade("out");';
  129. $this->assertEqual($expected, $result);
  130. $result = $this->Moo->effect('slideIn');
  131. $expected = '$("foo").slide("in");';
  132. $this->assertEqual($expected, $result);
  133. $result = $this->Moo->effect('slideOut');
  134. $expected = '$("foo").slide("out");';
  135. $this->assertEqual($expected, $result);
  136. $result = $this->Moo->effect('slideOut', array('speed' => 'fast'));
  137. $expected = '$("foo").set("slide", {duration:"short"}).slide("out");';
  138. $this->assertEqual($expected, $result);
  139. $result = $this->Moo->effect('slideOut', array('speed' => 'slow'));
  140. $expected = '$("foo").set("slide", {duration:"long"}).slide("out");';
  141. $this->assertEqual($expected, $result);
  142. }
  143. /**
  144. * Test Request Generation
  145. *
  146. * @return void
  147. */
  148. public function testRequest() {
  149. $result = $this->Moo->request(array('controller' => 'posts', 'action' => 'view', 1));
  150. $expected = 'var jsRequest = new Request({url:"\\/posts\\/view\\/1"}).send();';
  151. $this->assertEqual($expected, $result);
  152. $result = $this->Moo->request('/posts/view/1', array('update' => 'content'));
  153. $expected = 'var jsRequest = new Request.HTML({update:"content", url:"\\/posts\\/view\\/1"}).send();';
  154. $this->assertEqual($expected, $result);
  155. $result = $this->Moo->request('/people/edit/1', array(
  156. 'method' => 'post',
  157. 'complete' => 'doSuccess',
  158. 'error' => 'handleError',
  159. 'type' => 'json',
  160. 'data' => array('name' => 'jim', 'height' => '185cm'),
  161. 'wrapCallbacks' => false
  162. ));
  163. $expected = 'var jsRequest = new Request.JSON({method:"post", onComplete:doSuccess, onFailure:handleError, url:"\\/people\\/edit\\/1"}).send({"name":"jim","height":"185cm"});';
  164. $this->assertEqual($expected, $result);
  165. $result = $this->Moo->request('/people/edit/1', array(
  166. 'method' => 'post',
  167. 'complete' => 'doSuccess',
  168. 'update' => '#update-zone',
  169. 'wrapCallbacks' => false
  170. ));
  171. $expected = 'var jsRequest = new Request.HTML({method:"post", onComplete:doSuccess, update:"update-zone", url:"\\/people\\/edit\\/1"}).send();';
  172. $this->assertEqual($expected, $result);
  173. $result = $this->Moo->request('/people/edit/1', array(
  174. 'method' => 'post',
  175. 'complete' => 'doComplete',
  176. 'success' => 'doSuccess',
  177. 'error' => 'doFailure',
  178. 'before' => 'doBefore',
  179. 'update' => 'update-zone',
  180. 'wrapCallbacks' => false
  181. ));
  182. $expected = 'var jsRequest = new Request.HTML({method:"post", onComplete:doComplete, onFailure:doFailure, onRequest:doBefore, onSuccess:doSuccess, update:"update-zone", url:"\\/people\\/edit\\/1"}).send();';
  183. $this->assertEqual($expected, $result);
  184. $result = $this->Moo->request('/people/edit/1', array(
  185. 'method' => 'post',
  186. 'complete' => 'doComplete',
  187. 'success' => 'doSuccess',
  188. 'error' => 'doFailure',
  189. 'before' => 'doBefore',
  190. 'update' => 'update-zone',
  191. 'dataExpression' => true,
  192. 'data' => '$("foo").toQueryString()',
  193. 'wrapCallbacks' => false
  194. ));
  195. $expected = 'var jsRequest = new Request.HTML({method:"post", onComplete:doComplete, onFailure:doFailure, onRequest:doBefore, onSuccess:doSuccess, update:"update-zone", url:"\\/people\\/edit\\/1"}).send($("foo").toQueryString());';
  196. $this->assertEqual($expected, $result);
  197. $result = $this->Moo->request('/people/edit/1', array(
  198. 'method' => 'post',
  199. 'before' => 'doBefore',
  200. 'success' => 'doSuccess',
  201. 'complete' => 'doComplete',
  202. 'update' => '#update-zone',
  203. ));
  204. $expected = 'var jsRequest = new Request.HTML({method:"post", onComplete:function () {doComplete}, onRequest:function () {doBefore}, onSuccess:function (responseText, responseXML) {doSuccess}, update:"update-zone", url:"\\/people\\/edit\\/1"}).send();';
  205. $this->assertEqual($expected, $result);
  206. }
  207. /**
  208. * test sortable list generation
  209. *
  210. * @return void
  211. */
  212. public function testSortable() {
  213. $this->Moo->get('#myList');
  214. $result = $this->Moo->sortable(array(
  215. 'distance' => 5,
  216. 'containment' => 'parent',
  217. 'start' => 'onStart',
  218. 'complete' => 'onStop',
  219. 'sort' => 'onSort',
  220. 'wrapCallbacks' => false
  221. ));
  222. $expected = 'var jsSortable = new Sortables($("myList"), {constrain:"parent", onComplete:onStop, onSort:onSort, onStart:onStart, snap:5});';
  223. $this->assertEqual($expected, $result);
  224. }
  225. /**
  226. * test drag() method
  227. *
  228. * @return void
  229. */
  230. public function testDrag() {
  231. $this->Moo->get('#drag-me');
  232. $result = $this->Moo->drag(array(
  233. 'start' => 'onStart',
  234. 'drag' => 'onDrag',
  235. 'stop' => 'onStop',
  236. 'snapGrid' => array(10,10),
  237. 'wrapCallbacks' => false
  238. ));
  239. $expected = '$("drag-me").makeDraggable({onComplete:onStop, onDrag:onDrag, onStart:onStart, snap:[10,10]});';
  240. $this->assertEqual($expected, $result);
  241. }
  242. /**
  243. * test drop() method with the required drag option missing
  244. *
  245. * @expectedException PHPUnit_Framework_Error_Warning
  246. * @return void
  247. */
  248. public function testDropWithMissingOption() {
  249. $this->Moo->get('#drop-me');
  250. $this->Moo->drop(array(
  251. 'drop' => 'onDrop',
  252. 'leave' => 'onLeave',
  253. 'hover' => 'onHover',
  254. ));
  255. }
  256. /**
  257. * test drop() method
  258. *
  259. * @return void
  260. */
  261. public function testDrop() {
  262. $this->Moo->get('#drop-me');
  263. $result = $this->Moo->drop(array(
  264. 'drop' => 'onDrop',
  265. 'leave' => 'onLeave',
  266. 'hover' => 'onHover',
  267. 'drag' => '#my-drag',
  268. 'wrapCallbacks' => false
  269. ));
  270. $expected = '$("my-drag").makeDraggable({droppables:$("drop-me"), onDrop:onDrop, onEnter:onHover, onLeave:onLeave});';
  271. $this->assertEqual($expected, $result);
  272. $this->assertEqual($this->Moo->selection, '$("drop-me")');
  273. $result = $this->Moo->drop(array(
  274. 'drop' => 'onDrop',
  275. 'leave' => 'onLeave',
  276. 'hover' => 'onHover',
  277. 'drag' => '#my-drag',
  278. ));
  279. $expected = '$("my-drag").makeDraggable({droppables:$("drop-me"), onDrop:function (element, droppable, event) {onDrop}, onEnter:function (element, droppable) {onHover}, onLeave:function (element, droppable) {onLeave}});';
  280. $this->assertEqual($expected, $result);
  281. }
  282. /**
  283. * test slider generation
  284. *
  285. * @return void
  286. */
  287. public function testSlider() {
  288. $this->Moo->get('#slider');
  289. $result = $this->Moo->slider(array(
  290. 'handle' => '#my-handle',
  291. 'complete' => 'onComplete',
  292. 'change' => 'onChange',
  293. 'direction' => 'horizontal',
  294. 'wrapCallbacks' => false
  295. ));
  296. $expected = 'var jsSlider = new Slider($("slider"), $("my-handle"), {mode:"horizontal", onChange:onChange, onComplete:onComplete});';
  297. $this->assertEqual($expected, $result);
  298. $this->assertEqual($this->Moo->selection, '$("slider")');
  299. $this->Moo->get('#slider');
  300. $result = $this->Moo->slider(array(
  301. 'handle' => '#my-handle',
  302. 'complete' => 'onComplete',
  303. 'change' => 'onChange',
  304. 'direction' => 'horizontal',
  305. 'min' => 10,
  306. 'max' => 40,
  307. 'wrapCallbacks' => false
  308. ));
  309. $expected = 'var jsSlider = new Slider($("slider"), $("my-handle"), {mode:"horizontal", onChange:onChange, onComplete:onComplete, range:[10,40]});';
  310. $this->assertEqual($expected, $result);
  311. $this->Moo->get('#slider');
  312. $result = $this->Moo->slider(array(
  313. 'handle' => '#my-handle',
  314. 'complete' => 'complete;',
  315. 'change' => 'change;',
  316. 'direction' => 'horizontal',
  317. ));
  318. $expected = 'var jsSlider = new Slider($("slider"), $("my-handle"), {mode:"horizontal", onChange:function (step) {change;}, onComplete:function (event) {complete;}});';
  319. $this->assertEqual($expected, $result);
  320. }
  321. /**
  322. * test the serializeForm implementation.
  323. *
  324. * @return void
  325. */
  326. public function testSerializeForm() {
  327. $this->Moo->get('#element');
  328. $result = $this->Moo->serializeForm(array('isForm' => true));
  329. $expected = '$("element").toQueryString();';
  330. $this->assertEqual($expected, $result);
  331. $result = $this->Moo->serializeForm(array('isForm' => true, 'inline' => true));
  332. $expected = '$("element").toQueryString()';
  333. $this->assertEqual($expected, $result);
  334. $result = $this->Moo->serializeForm(array('isForm' => false));
  335. $expected = '$($("element").form).toQueryString();';
  336. $this->assertEqual($expected, $result);
  337. $result = $this->Moo->serializeForm(array('isForm' => false, 'inline' => true));
  338. $expected = '$($("element").form).toQueryString()';
  339. $this->assertEqual($expected, $result);
  340. }
  341. }