PageRenderTime 45ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/Menus/Test/Case/Model/MenuTest.php

https://github.com/kareypowell/croogo
PHP | 113 lines | 55 code | 19 blank | 39 comment | 1 complexity | 534852906bfe67802793dee92e9600ab MD5 | raw file
  1. <?php
  2. App::uses('Menu', 'Menus.Model');
  3. App::uses('MenusAppModel', 'Menus.Model');
  4. App::uses('CroogoTestCase', 'Croogo.TestSuite');
  5. /**
  6. * TestMenu
  7. *
  8. */
  9. class TestMenu extends Menu {
  10. /**
  11. * model alias
  12. *
  13. * @var string
  14. */
  15. public $alias = 'Menu';
  16. }
  17. /**
  18. * TestUser
  19. *
  20. */
  21. class MenuTest extends CroogoTestCase {
  22. /**
  23. * Fixtures
  24. *
  25. * @var array
  26. */
  27. public $fixtures = array(
  28. 'plugin.users.aco',
  29. 'plugin.users.aro',
  30. 'plugin.users.aros_aco',
  31. 'plugin.settings.setting',
  32. 'plugin.menus.menu',
  33. 'plugin.menus.link',
  34. );
  35. /**
  36. * Menu instance
  37. *
  38. * @var TestMenu
  39. */
  40. public $Menu;
  41. /**
  42. * setUp method
  43. *
  44. * @return void
  45. */
  46. public function setUp() {
  47. parent::setUp();
  48. $this->Menu = ClassRegistry::init('TestMenu');
  49. }
  50. /**
  51. * tearDown method
  52. *
  53. * @return void
  54. */
  55. public function tearDown() {
  56. parent::tearDown();
  57. unset($this->Menu);
  58. }
  59. /**
  60. * testDeleteDependentLinks method
  61. */
  62. public function testDeleteDependentLinks() {
  63. $totalLinks = $this->Menu->Link->find('count');
  64. $toDelete = $this->Menu->Link->find('count', array(
  65. 'conditions' => array('Link.menu_id' => 4)
  66. ));
  67. $this->assertTrue($toDelete > 0);
  68. $this->Menu->id = 4;
  69. $this->Menu->delete();
  70. $count = $this->Menu->Link->find('count', array('conditions' => array('Link.menu_id' => 4)));
  71. $this->assertTrue($count == 0);
  72. $currentLinks = $this->Menu->Link->find('count');
  73. $this->assertEquals($totalLinks, $currentLinks + $toDelete);
  74. }
  75. /**
  76. * Test deleting a menu should not mess up other menu Link hierarchy
  77. */
  78. public function testDeleteMenuLinkIntegrity() {
  79. $settings = array('scope' => array('Link.menu_id' => 3));
  80. $expected = array(
  81. 7 => 'Home',
  82. 8 => 'About',
  83. 9 => '_Child link',
  84. 15 => 'Contact'
  85. );
  86. $this->Menu->Link->Behaviors->Tree->setup($this->Menu->Link, $settings);
  87. $links = $this->Menu->Link->generateTreeList(array('menu_id' => 3));
  88. $this->assertEquals($expected, $links);
  89. $this->Menu->delete(6);
  90. $this->Menu->Link->Behaviors->Tree->setup($this->Menu->Link, $settings);
  91. $links = $this->Menu->Link->generateTreeList(array('menu_id' => 3));
  92. $this->assertEquals($expected, $links);
  93. }
  94. }