📄 tree.test.php
字号:
$this->NumberTree->id = $parent['NumberTree']['id']; $result = $this->NumberTree->children(null, true, array('name')); $expected = array(array('NumberTree' => array('name' => '1.2',)), array('NumberTree' => array('name' => '1.1',))); $this->assertIdentical($result, $expected); }/** * testMoveDownFail method * * @access public * @return void */ function testMoveDownFail() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(2, 2); $data = $this->NumberTree->find(array('NumberTree.name' => '1.2')); $this->NumberTree->moveDown($data['NumberTree']['id']); $parent = $this->NumberTree->findByName('1. Root', array('id')); $this->NumberTree->id = $parent['NumberTree']['id']; $result = $this->NumberTree->children(null, true, array('name')); $expected = array(array('NumberTree' => array('name' => '1.1',)), array('NumberTree' => array('name' => '1.2',))); $this->assertIdentical($result, $expected); }/** * testMoveDownLast method * * @access public * @return void */ function testMoveDownLast() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(1, 10); $data = $this->NumberTree->find(array('NumberTree.name' => '1.5'), array('id')); $this->NumberTree->moveDown($data['NumberTree']['id'], true); $parent = $this->NumberTree->findByName('1. Root', array('id')); $this->NumberTree->id = $parent['NumberTree']['id']; $result = $this->NumberTree->children(null, true, array('name')); $expected = array( array('NumberTree' => array('name' => '1.1',)), array('NumberTree' => array('name' => '1.2',)), array('NumberTree' => array('name' => '1.3',)), array('NumberTree' => array('name' => '1.4',)), array('NumberTree' => array('name' => '1.6',)), array('NumberTree' => array('name' => '1.7',)), array('NumberTree' => array('name' => '1.8',)), array('NumberTree' => array('name' => '1.9',)), array('NumberTree' => array('name' => '1.10',)), array('NumberTree' => array('name' => '1.5',))); $this->assertIdentical($result, $expected); }/** * testMoveDown2 method * * @access public * @return void */ function testMoveDown2() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(1, 10); $data = $this->NumberTree->find(array('NumberTree.name' => '1.5'), array('id')); $this->NumberTree->moveDown($data['NumberTree']['id'], 2); $parent = $this->NumberTree->findByName('1. Root', array('id')); $this->NumberTree->id = $parent['NumberTree']['id']; $result = $this->NumberTree->children(null, true, array('name')); $expected = array( array('NumberTree' => array('name' => '1.1',)), array('NumberTree' => array('name' => '1.2',)), array('NumberTree' => array('name' => '1.3',)), array('NumberTree' => array('name' => '1.4',)), array('NumberTree' => array('name' => '1.6',)), array('NumberTree' => array('name' => '1.7',)), array('NumberTree' => array('name' => '1.5',)), array('NumberTree' => array('name' => '1.8',)), array('NumberTree' => array('name' => '1.9',)), array('NumberTree' => array('name' => '1.10',))); $this->assertIdentical($result, $expected); }/** * testSaveNoMove method * * @access public * @return void */ function testSaveNoMove() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(1, 10); $data = $this->NumberTree->find(array('NumberTree.name' => '1.5'), array('id')); $this->NumberTree->id = $data['NumberTree']['id']; $this->NumberTree->saveField('name', 'renamed'); $parent = $this->NumberTree->findByName('1. Root', array('id')); $this->NumberTree->id = $parent['NumberTree']['id']; $result = $this->NumberTree->children(null, true, array('name')); $expected = array( array('NumberTree' => array('name' => '1.1',)), array('NumberTree' => array('name' => '1.2',)), array('NumberTree' => array('name' => '1.3',)), array('NumberTree' => array('name' => '1.4',)), array('NumberTree' => array('name' => 'renamed',)), array('NumberTree' => array('name' => '1.6',)), array('NumberTree' => array('name' => '1.7',)), array('NumberTree' => array('name' => '1.8',)), array('NumberTree' => array('name' => '1.9',)), array('NumberTree' => array('name' => '1.10',))); $this->assertIdentical($result, $expected); }/** * testMoveToRootAndMoveUp method * * @access public * @return void */ function testMoveToRootAndMoveUp(){ $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(1, 1); $data = $this->NumberTree->find(array('NumberTree.name' => '1.1'), array('id')); $this->NumberTree->id = $data['NumberTree']['id']; $this->NumberTree->save(array('parent_id' => null)); $result = $this->NumberTree->verify(); $this->assertIdentical($result, true); $this->NumberTree->moveup(); $result = $this->NumberTree->find('all', array('fields' => 'name', 'order' => 'NumberTree.lft ASC')); $expected = array(array('NumberTree' => array('name' => '1.1')), array('NumberTree' => array('name' => '1. Root'))); $this->assertIdentical($result, $expected); }/** * testDelete method * * @access public * @return void */ function testDelete() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(2, 2); $initialCount = $this->NumberTree->find('count'); $result = $this->NumberTree->findByName('1.1.1'); $return = $this->NumberTree->delete($result['NumberTree']['id']); $this->assertEqual($return, true); $laterCount = $this->NumberTree->find('count'); $this->assertEqual($initialCount - 1, $laterCount); $validTree= $this->NumberTree->verify(); $this->assertIdentical($validTree, true); $initialCount = $this->NumberTree->find('count'); $result= $this->NumberTree->findByName('1.1'); $return = $this->NumberTree->delete($result['NumberTree']['id']); $this->assertEqual($return, true); $laterCount = $this->NumberTree->find('count'); $this->assertEqual($initialCount - 2, $laterCount); $validTree = $this->NumberTree->verify(); $this->assertIdentical($validTree, true); } function testRemove() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(2, 2); $initialCount = $this->NumberTree->find('count'); $result = $this->NumberTree->findByName('1.1'); $this->NumberTree->removeFromTree($result['NumberTree']['id']); $laterCount = $this->NumberTree->find('count'); $this->assertEqual($initialCount, $laterCount); $children = $this->NumberTree->children($result['NumberTree']['parent_id'], true, array('name')); $expects = array(array('NumberTree' => array('name' => '1.1.1')), array('NumberTree' => array('name' => '1.1.2')), array('NumberTree' => array('name' => '1.2'))); $this->assertEqual($children, $expects); $topNodes = $this->NumberTree->children(false,true,array('name')); $expects = array(array('NumberTree' => array('name' => '1. Root')), array('NumberTree' => array('name' => '1.1'))); $this->assertEqual($topNodes, $expects); $validTree = $this->NumberTree->verify(); $this->assertIdentical($validTree, true); } function testRemoveLastTopParent() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(2, 2); $initialCount = $this->NumberTree->find('count'); $initialTopNodes = $this->NumberTree->childCount(false); $result = $this->NumberTree->findByName('1. Root'); $this->NumberTree->removeFromTree($result['NumberTree']['id']); $laterCount = $this->NumberTree->find('count'); $laterTopNodes = $this->NumberTree->childCount(false); $this->assertEqual($initialCount, $laterCount); $this->assertEqual($initialTopNodes, $laterTopNodes); $topNodes = $this->NumberTree->children(false,true,array('name')); $expects = array(array('NumberTree' => array('name' => '1.1')), array('NumberTree' => array('name' => '1.2')), array('NumberTree' => array('name' => '1. Root'))); $this->assertEqual($topNodes, $expects); $validTree = $this->NumberTree->verify(); $this->assertIdentical($validTree, true); } function testRemoveAndDelete() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(2, 2); $initialCount = $this->NumberTree->find('count'); $result = $this->NumberTree->findByName('1.1'); $this->NumberTree->removeFromTree($result['NumberTree']['id'],true); $laterCount = $this->NumberTree->find('count'); $this->assertEqual($initialCount-1, $laterCount); $children = $this->NumberTree->children($result['NumberTree']['parent_id'], true, array('name'), 'lft asc'); $expects= array(array('NumberTree' => array('name' => '1.1.1')), array('NumberTree' => array('name' => '1.1.2')), array('NumberTree' => array('name' => '1.2'))); $this->assertEqual($children, $expects); $topNodes = $this->NumberTree->children(false,true,array('name')); $expects = array(array('NumberTree' => array('name' => '1. Root'))); $this->assertEqual($topNodes, $expects); $validTree = $this->NumberTree->verify(); $this->assertIdentical($validTree, true); } function testChildren() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(2, 2); $data = $this->NumberTree->find(array('NumberTree.name' => '1. Root')); $this->NumberTree->id= $data['NumberTree']['id']; $direct = $this->NumberTree->children(null, true, array('id', 'name', 'parent_id', 'lft', 'rght')); $expects = array(array('NumberTree' => array('id' => 2, 'name' => '1.1', 'parent_id' => 1, 'lft' => 2, 'rght' => 7)), array('NumberTree' => array('id' => 5, 'name' => '1.2', 'parent_id' => 1, 'lft' => 8, 'rght' => 13))); $this->assertEqual($direct, $expects); $total = $this->NumberTree->children(null, null, array('id', 'name', 'parent_id', 'lft', 'rght')); $expects = array(array('NumberTree' => array('id' => 2, 'name' => '1.1', 'parent_id' => 1, 'lft' => 2, 'rght' => 7)), array('NumberTree' => array('id' => 3, 'name' => '1.1.1', 'parent_id' => 2, 'lft' => 3, 'rght' => 4)), array('NumberTree' => array('id' => 4, 'name' => '1.1.2', 'parent_id' => 2, 'lft' => 5, 'rght' => 6)), array('NumberTree' => array('id' => 5, 'name' => '1.2', 'parent_id' => 1, 'lft' => 8, 'rght' => 13)), array('NumberTree' => array( 'id' => 6, 'name' => '1.2.1', 'parent_id' => 5, 'lft' => 9, 'rght' => 10)), array('NumberTree' => array('id' => 7, 'name' => '1.2.2', 'parent_id' => 5, 'lft' => 11, 'rght' => 12))); $this->assertEqual($total, $expects); } function testCountChildren() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(2, 2); $data = $this->NumberTree->find(array('NumberTree.name' => '1. Root')); $this->NumberTree->id = $data['NumberTree']['id']; $direct = $this->NumberTree->childCount(null, true); $this->assertEqual($direct, 2); $expects = $this->NumberTree->find('count') - 1; $total = $this->NumberTree->childCount(); $this->assertEqual($total, 6); } function testGetParentNode() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(2, 2); $data = $this->NumberTree->find(array('NumberTree.name' => '1.2.2')); $this->NumberTree->id= $data['NumberTree']['id']; $result = $this->NumberTree->getparentNode(null, array('name')); $expects = array('NumberTree' => array('name' => '1.2')); $this->assertIdentical($result, $expects); } function testGetPath() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(2, 2); $data = $this->NumberTree->find(array('NumberTree.name' => '1.2.2')); $this->NumberTree->id= $data['NumberTree']['id']; $result = $this->NumberTree->getPath(null, array('name')); $expects = array(array('NumberTree' => array('name' => '1. Root')), array('NumberTree' => array('name' => '1.2')), array('NumberTree' => array('name' => '1.2.2'))); $this->assertIdentical($result, $expects); } function testNoAmbiguousColumn() { $this->NumberTree =& new NumberTree(); $this->NumberTree->bindModel(array('belongsTo' => array('Dummy' => array('className' => 'NumberTree', 'foreignKey' => 'parent_id', 'conditions' => array('Dummy.id' => null)))), false); $this->NumberTree->initialize(2, 2); $data = $this->NumberTree->find(array('NumberTree.name' => '1. Root')); $this->NumberTree->id= $data['NumberTree']['id']; $direct = $this->NumberTree->children(null, true, array('id', 'name', 'parent_id', 'lft', 'rght'), null, null, null, 1); $expects = array(array('NumberTree' => array('id' => 2, 'name' => '1.1', 'parent_id' => 1, 'lft' => 2, 'rght' => 7)), array('NumberTree' => array('id' => 5, 'name' => '1.2', 'parent_id' => 1, 'lft' => 8, 'rght' => 13))); $this->assertEqual($direct, $expects); $total = $this->NumberTree->children(null, null, array('id', 'name', 'parent_id', 'lft', 'rght'), null, null, null, 1); $expects = array( array('NumberTree' => array('id' => 2, 'name' => '1.1', 'parent_id' => 1, 'lft' => 2, 'rght' => 7)), array('NumberTree' => array('id' => 3, 'name' => '1.1.1', 'parent_id' => 2, 'lft' => 3, 'rght' => 4)), array('NumberTree' => array('id' => 4, 'name' => '1.1.2', 'parent_id' => 2, 'lft' => 5, 'rght' => 6)), array('NumberTree' => array('id' => 5, 'name' => '1.2', 'parent_id' => 1, 'lft' => 8, 'rght' => 13)), array('NumberTree' => array( 'id' => 6, 'name' => '1.2.1', 'parent_id' => 5, 'lft' => 9, 'rght' => 10)), array('NumberTree' => array('id' => 7, 'name' => '1.2.2', 'parent_id' => 5, 'lft' => 11, 'rght' => 12)) ); $this->assertEqual($total, $expects); } function testReorderTree() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(3, 3); $nodes = $this->NumberTree->find('list', array('order' => 'lft')); $data = $this->NumberTree->find(array('NumberTree.name' => '1.1'), array('id')); $this->NumberTree->moveDown($data['NumberTree']['id']); $data = $this->NumberTree->find(array('NumberTree.name' => '1.2.1'), array('id')); $this->NumberTree->moveDown($data['NumberTree']['id']); $data = $this->NumberTree->find(array('NumberTree.name' => '1.3.2.2'), array('id')); $this->NumberTree->moveDown($data['NumberTree']['id']); $unsortedNodes = $this->NumberTree->find('list', array('order' => 'lft')); $this->assertNotIdentical($nodes, $unsortedNodes); $this->NumberTree->reorder(); $sortedNodes = $this->NumberTree->find('list', array('order' => 'lft')); $this->assertIdentical($nodes, $sortedNodes); } function testGenerateTreeListWithSelfJoin() { $this->NumberTree =& new NumberTree(); $this->NumberTree->bindModel(array('belongsTo' => array('Dummy' => array('className' => 'NumberTree', 'foreignKey' => 'parent_id', 'conditions' => array('Dummy.id' => null)))), false); $this->NumberTree->initialize(2, 2); $result = $this->NumberTree->generateTreeList(); $expected = array(1 => '1. Root', 2 => '_1.1', 3 => '__1.1.1', 4 => '__1.1.2', 5 => '_1.2', 6 => '__1.2.1', 7 => '__1.2.2'); $this->assertIdentical($result, $expected); } function testMoveUpWithScope() { $this->Ad =& new Ad(); $this->Ad->Behaviors->attach('Tree', array('scope'=>'Campaign')); $this->Ad->moveUp(6); $this->Ad->id = 4; $result = $this->Ad->children(); $this->assertEqual(Set::extract('/Ad/id', $result), array(6, 5)); $this->assertEqual(Set::extract('/Campaign/id', $result), array(2, 2)); } function testMoveDownWithScope() { $this->Ad =& new Ad(); $this->Ad->Behaviors->attach('Tree', array('scope'=>'Campaign')); $this->Ad->moveDown(6); $this->Ad->id = 4; $result = $this->Ad->children(); $this->assertEqual(Set::extract('/Ad/id', $result), array(5, 6)); $this->assertEqual(Set::extract('/Campaign/id', $result), array(2, 2)); } function testArraySyntax() { $this->NumberTree =& new NumberTree(); $this->NumberTree->initialize(3, 3); $this->assertIdentical($this->NumberTree->childcount(2), $this->NumberTree->childcount(array('id' => 2))); $this->assertIdentical($this->NumberTree->getparentnode(2), $this->NumberTree->getparentnode(array('id' => 2))); $this->assertIdentical($this->NumberTree->getpath(4), $this->NumberTree->getpath(array('id' => 4))); }}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -