/tests/cases/controllers/links_controller.test.php

https://github.com/ShadowCross/croogo · PHP · 333 lines · 296 code · 37 blank · 0 comment · 2 complexity · 1ef2235af4946b09bb4f8850e301d802 MD5 · raw file

  1. <?php
  2. App::import('Controller', 'Links');
  3. class TestLinksController extends LinksController {
  4. public $name = 'Links';
  5. public $autoRender = false;
  6. public $testView = false;
  7. public function redirect($url, $status = null, $exit = true) {
  8. $this->redirectUrl = $url;
  9. }
  10. public function render($action = null, $layout = null, $file = null) {
  11. if (!$this->testView) {
  12. $this->renderedAction = $action;
  13. } else {
  14. return parent::render($action, $layout, $file);
  15. }
  16. }
  17. public function _stop($status = 0) {
  18. $this->stopped = $status;
  19. }
  20. public function __securityError() {
  21. }
  22. }
  23. class LinksControllerTestCase extends CakeTestCase {
  24. public $fixtures = array(
  25. 'aco',
  26. 'aro',
  27. 'aros_aco',
  28. 'block',
  29. 'comment',
  30. 'contact',
  31. 'i18n',
  32. 'language',
  33. 'link',
  34. 'menu',
  35. 'message',
  36. 'meta',
  37. 'node',
  38. 'nodes_taxonomy',
  39. 'region',
  40. 'role',
  41. 'setting',
  42. 'taxonomy',
  43. 'term',
  44. 'type',
  45. 'types_vocabulary',
  46. 'user',
  47. 'vocabulary',
  48. );
  49. public function startTest() {
  50. $this->Links = new TestLinksController();
  51. $this->Links->constructClasses();
  52. $this->Links->params['controller'] = 'links';
  53. $this->Links->params['pass'] = array();
  54. $this->Links->params['named'] = array();
  55. }
  56. public function testAdminIndex() {
  57. $this->Links->params['action'] = 'admin_index';
  58. $this->Links->params['url']['url'] = 'admin/links';
  59. $this->Links->Component->initialize($this->Links);
  60. $this->Links->Session->write('Auth.User', array(
  61. 'id' => 1,
  62. 'username' => 'admin',
  63. ));
  64. $this->Links->beforeFilter();
  65. $this->Links->Component->startup($this->Links);
  66. $this->Links->admin_index();
  67. $this->assertEqual($this->Links->redirectUrl, array(
  68. 'controller' => 'menus',
  69. 'action' => 'index',
  70. ));
  71. $mainMenu = $this->Links->Link->Menu->findByAlias('main');
  72. $this->Links->admin_index($mainMenu['Menu']['id']);
  73. $this->assertEqual($this->Links->viewVars['menu'], $mainMenu);
  74. $this->Links->testView = true;
  75. $output = $this->Links->render('admin_index');
  76. $this->assertFalse(strpos($output, '<pre class="cake-debug">'));
  77. }
  78. public function testAdminAdd() {
  79. $this->Links->params['action'] = 'admin_add';
  80. $this->Links->params['url']['url'] = 'admin/links/add';
  81. $this->Links->Component->initialize($this->Links);
  82. $this->Links->Session->write('Auth.User', array(
  83. 'id' => 1,
  84. 'username' => 'admin',
  85. ));
  86. $mainMenu = ClassRegistry::init('Menu')->findByAlias('main');
  87. $this->Links->data = array(
  88. 'Link' => array(
  89. 'menu_id' => $mainMenu['Menu']['id'],
  90. 'title' => 'Test link',
  91. 'link' => '#test-link',
  92. 'status' => 1,
  93. ),
  94. 'Role' => array(
  95. 'Role' => array(),
  96. ),
  97. );
  98. $this->Links->beforeFilter();
  99. $this->Links->Component->startup($this->Links);
  100. $this->Links->admin_add($mainMenu['Menu']['id']);
  101. $this->assertEqual($this->Links->redirectUrl, array('action' => 'index', $mainMenu['Menu']['id']));
  102. $testLink = $this->Links->Link->findByLink('#test-link');
  103. $this->assertEqual($testLink['Link']['title'], 'Test link');
  104. $this->Links->testView = true;
  105. $output = $this->Links->render('admin_add');
  106. $this->assertFalse(strpos($output, '<pre class="cake-debug">'));
  107. }
  108. public function testAdminEdit() {
  109. $this->Links->params['action'] = 'admin_edit';
  110. $this->Links->params['url']['url'] = 'admin/links/edit';
  111. $this->Links->Component->initialize($this->Links);
  112. $this->Links->Session->write('Auth.User', array(
  113. 'id' => 1,
  114. 'username' => 'admin',
  115. ));
  116. $homeLink = ClassRegistry::init('Link')->find('first', array(
  117. 'conditions' => array(
  118. 'Link.title' => 'Home',
  119. 'Link.link' => '/',
  120. ),
  121. ));
  122. $this->Links->data = array(
  123. 'Link' => array(
  124. 'id' => $homeLink['Link']['id'],
  125. 'menu_id' => $homeLink['Link']['menu_id'],
  126. 'title' => 'Home [modified]',
  127. 'link' => '/',
  128. 'status' => 1,
  129. ),
  130. 'Role' => array(
  131. 'Role' => array(),
  132. ),
  133. );
  134. $this->Links->beforeFilter();
  135. $this->Links->Component->startup($this->Links);
  136. $this->Links->admin_edit($homeLink['Link']['id']);
  137. $this->assertEqual($this->Links->redirectUrl, array('action' => 'index', $homeLink['Link']['menu_id']));
  138. $link = $this->Links->Link->findById($homeLink['Link']['id']);
  139. $this->assertEqual($link['Link']['title'], 'Home [modified]');
  140. $this->Links->testView = true;
  141. $output = $this->Links->render('admin_edit');
  142. $this->assertFalse(strpos($output, '<pre class="cake-debug">'));
  143. }
  144. public function testAdminDelete() {
  145. $this->Links->params['action'] = 'admin_delete';
  146. $this->Links->params['url']['url'] = 'admin/links/delete';
  147. $this->Links->Component->initialize($this->Links);
  148. $this->Links->Session->write('Auth.User', array(
  149. 'id' => 1,
  150. 'username' => 'admin',
  151. ));
  152. $this->Links->beforeFilter();
  153. $this->Links->Component->startup($this->Links);
  154. $homeLink = ClassRegistry::init('Link')->find('first', array(
  155. 'conditions' => array(
  156. 'Link.title' => 'Home',
  157. 'Link.link' => '/',
  158. ),
  159. ));
  160. $this->Links->admin_delete($homeLink['Link']['id']);
  161. $this->assertEqual($this->Links->redirectUrl, array('action' => 'index', $homeLink['Link']['menu_id']));
  162. $hasAny = $this->Links->Link->hasAny(array(
  163. 'Link.title' => 'Home',
  164. 'Link.link' => '/',
  165. ));
  166. $this->assertFalse($hasAny);
  167. }
  168. public function testAdminMoveUp() {
  169. $this->Links->params['action'] = 'admin_moveup';
  170. $this->Links->params['url']['url'] = 'admin/links/moveup';
  171. $this->Links->Component->initialize($this->Links);
  172. $this->Links->Session->write('Auth.User', array(
  173. 'id' => 1,
  174. 'username' => 'admin',
  175. ));
  176. $this->Links->beforeFilter();
  177. $this->Links->Component->startup($this->Links);
  178. $mainMenu = ClassRegistry::init('Menu')->findByAlias('main');
  179. $aboutLink = ClassRegistry::init('Link')->find('first', array(
  180. 'conditions' => array(
  181. 'Link.menu_id' => $mainMenu['Menu']['id'],
  182. 'Link.title' => 'About',
  183. 'Link.link' => '/about',
  184. ),
  185. ));
  186. $this->Links->admin_moveup($aboutLink['Link']['id']);
  187. $this->assertEqual($this->Links->redirectUrl, array('action' => 'index', $mainMenu['Menu']['id']));
  188. $list = $this->Links->Link->generatetreelist(array(
  189. 'Link.menu_id' => $mainMenu['Menu']['id'],
  190. 'Link.status' => 1,
  191. ));
  192. $linkTitles = array_values($list);
  193. $this->assertEqual($linkTitles, array(
  194. 'About',
  195. 'Home',
  196. 'Contact'
  197. ));
  198. }
  199. public function testAdminMoveUpWithSteps() {
  200. $this->Links->params['action'] = 'admin_moveup';
  201. $this->Links->params['url']['url'] = 'admin/links/moveup';
  202. $this->Links->Component->initialize($this->Links);
  203. $this->Links->Session->write('Auth.User', array(
  204. 'id' => 1,
  205. 'username' => 'admin',
  206. ));
  207. $this->Links->beforeFilter();
  208. $this->Links->Component->startup($this->Links);
  209. $mainMenu = ClassRegistry::init('Menu')->findByAlias('main');
  210. $contactLink = ClassRegistry::init('Link')->find('first', array(
  211. 'conditions' => array(
  212. 'Link.menu_id' => $mainMenu['Menu']['id'],
  213. 'Link.title' => 'Contact',
  214. ),
  215. ));
  216. $this->Links->admin_moveup($contactLink['Link']['id'], 2);
  217. $this->assertEqual($this->Links->redirectUrl, array('action' => 'index', $mainMenu['Menu']['id']));
  218. $list = $this->Links->Link->generatetreelist(array(
  219. 'Link.menu_id' => $mainMenu['Menu']['id'],
  220. 'Link.status' => 1,
  221. ));
  222. $linkTitles = array_values($list);
  223. $this->assertEqual($linkTitles, array(
  224. 'Contact',
  225. 'Home',
  226. 'About',
  227. ));
  228. }
  229. public function testAdminMoveDown() {
  230. $this->Links->params['action'] = 'admin_movedown';
  231. $this->Links->params['url']['url'] = 'admin/links/movedown';
  232. $this->Links->Component->initialize($this->Links);
  233. $this->Links->Session->write('Auth.User', array(
  234. 'id' => 1,
  235. 'username' => 'admin',
  236. ));
  237. $this->Links->beforeFilter();
  238. $this->Links->Component->startup($this->Links);
  239. $mainMenu = ClassRegistry::init('Menu')->findByAlias('main');
  240. $aboutLink = ClassRegistry::init('Link')->find('first', array(
  241. 'conditions' => array(
  242. 'Link.menu_id' => $mainMenu['Menu']['id'],
  243. 'Link.title' => 'About',
  244. 'Link.link' => '/about',
  245. ),
  246. ));
  247. $this->Links->admin_movedown($aboutLink['Link']['id']);
  248. $this->assertEqual($this->Links->redirectUrl, array('action' => 'index', $mainMenu['Menu']['id']));
  249. $list = $this->Links->Link->generatetreelist(array(
  250. 'Link.menu_id' => $mainMenu['Menu']['id'],
  251. 'Link.status' => 1,
  252. ));
  253. $linkTitles = array_values($list);
  254. $this->assertEqual($linkTitles, array(
  255. 'Home',
  256. 'Contact',
  257. 'About',
  258. ));
  259. }
  260. public function testAdminMoveDownWithSteps() {
  261. $this->Links->params['action'] = 'admin_movedown';
  262. $this->Links->params['url']['url'] = 'admin/links/movedown';
  263. $this->Links->Component->initialize($this->Links);
  264. $this->Links->Session->write('Auth.User', array(
  265. 'id' => 1,
  266. 'username' => 'admin',
  267. ));
  268. $this->Links->beforeFilter();
  269. $this->Links->Component->startup($this->Links);
  270. $mainMenu = ClassRegistry::init('Menu')->findByAlias('main');
  271. $homeLink = ClassRegistry::init('Link')->find('first', array(
  272. 'conditions' => array(
  273. 'Link.menu_id' => $mainMenu['Menu']['id'],
  274. 'Link.title' => 'Home',
  275. ),
  276. ));
  277. $this->Links->admin_movedown($homeLink['Link']['id'], 2);
  278. $this->assertEqual($this->Links->redirectUrl, array('action' => 'index', $mainMenu['Menu']['id']));
  279. $list = $this->Links->Link->generatetreelist(array(
  280. 'Link.menu_id' => $mainMenu['Menu']['id'],
  281. 'Link.status' => 1,
  282. ));
  283. $linkTitles = array_values($list);
  284. $this->assertEqual($linkTitles, array(
  285. 'About',
  286. 'Contact',
  287. 'Home',
  288. ));
  289. }
  290. public function endTest() {
  291. $this->Links->Session->destroy();
  292. unset($this->Links);
  293. ClassRegistry::flush();
  294. }
  295. }
  296. ?>