TreeHelperTest.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. App::uses('TreeHelper', 'Tools.View/Helper');
  3. App::uses('MyCakeTestCase', 'Tools.TestSuite');
  4. App::uses('View', 'View');
  5. App::uses('Hash', 'Utility');
  6. class TreeHelperTest extends MyCakeTestCase {
  7. public $fixtures = array('core.after_tree');
  8. public $Model;
  9. public function setUp() {
  10. parent::setUp();
  11. $this->Tree = new TreeHelper(new View(null));
  12. $this->Model = ClassRegistry::init('AfterTree');
  13. $this->Model->Behaviors->attach('Tree');
  14. $this->Model->truncate();
  15. $data = array(
  16. array('name' => 'One'),
  17. array('name' => 'Two'),
  18. array('name' => 'Three'),
  19. array('name' => 'Four'),
  20. array('name' => 'One-SubA', 'parent_id' => 1),
  21. array('name' => 'Two-SubA', 'parent_id' => 2),
  22. array('name' => 'Four-SubA', 'parent_id' => 4),
  23. array('name' => 'Two-SubA-1', 'parent_id' => 6),
  24. array('name' => 'Two-SubA-1-1', 'parent_id' => 8),
  25. );
  26. foreach ($data as $row) {
  27. $this->Model->create();
  28. $this->Model->save($row);
  29. }
  30. }
  31. public function tearDown() {
  32. parent::tearDown();
  33. }
  34. public function testObject() {
  35. $this->assertTrue(is_a($this->Tree, 'TreeHelper'));
  36. }
  37. public function testGenerate() {
  38. $tree = $this->Model->find('threaded');
  39. $output = $this->Tree->generate($tree);
  40. $expected = <<<TEXT
  41. <ul>
  42. <li>One
  43. <ul>
  44. <li>One-SubA</li>
  45. </ul>
  46. </li>
  47. <li>Two
  48. <ul>
  49. <li>Two-SubA
  50. <ul>
  51. <li>Two-SubA-1
  52. <ul>
  53. <li>Two-SubA-1-1</li>
  54. </ul>
  55. </li>
  56. </ul>
  57. </li>
  58. </ul>
  59. </li>
  60. <li>Three</li>
  61. <li>Four
  62. <ul>
  63. <li>Four-SubA</li>
  64. </ul>
  65. </li>
  66. </ul>
  67. TEXT;
  68. $this->assertTextEquals($expected, $output);
  69. $this->assertTrue(substr_count($output, '<ul>') === substr_count($output, '</ul>'));
  70. $this->assertTrue(substr_count($output, '<li>') === substr_count($output, '</li>'));
  71. }
  72. //TODO: fixme: 8,9 is "Two-SubA-1-1" and so this entry should also be active
  73. public function testGenerateWithAutoPath() {
  74. $tree = $this->Model->find('threaded');
  75. debug($tree);
  76. $output = $this->Tree->generate($tree, array('autoPath' => array(8, 9)));
  77. debug($output);
  78. $expected = <<<TEXT
  79. <ul>
  80. <li>One
  81. <ul>
  82. <li>One-SubA</li>
  83. </ul>
  84. </li>
  85. <li>Two
  86. <ul class="active">
  87. <li class="active">Two-SubA
  88. <ul class="active">
  89. <li class="active">Two-SubA-1
  90. <ul>
  91. <li>Two-SubA-1-1</li>
  92. </ul>
  93. </li>
  94. </ul>
  95. </li>
  96. </ul>
  97. </li>
  98. <li>Three</li>
  99. <li>Four
  100. <ul>
  101. <li>Four-SubA</li>
  102. </ul>
  103. </li>
  104. </ul>
  105. TEXT;
  106. $this->assertTextEquals($expected, $output);
  107. }
  108. }