/** @test */ public function visitorCorrectlyCreatesLeftRightEnumerationOnTree() { $node1 = Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode('1', 0, 0, 1, '1'); $node2 = Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode('2', 0, 0, 1, '2'); $node3 = Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode('3', 0, 0, 1, '3'); $node4 = Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode('4', 0, 0, 1, '4'); $node5 = Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode('5', 0, 0, 1, '5'); $node6 = Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode('6', 0, 0, 1, '6'); $node1->addChild($node2); $node2->setParent($node1); $node1->addChild($node5); $node5->setParent($node1); $node2->addChild($node3); $node3->setParent($node2); $node2->addChild($node4); $node4->setParent($node2); $node5->addChild($node6); $node6->setParent($node5); $tree = Tx_PtExtbase_Tree_Tree::getInstanceByRootNode($node1); $visitor = new Tx_PtExtbase_Tree_NestedSetVisitor(); $treeWalker = new Tx_PtExtbase_Tree_TreeWalker(array($visitor)); $treeWalker->traverseTreeDfs($tree); $this->assertEquals($node1->getLft(), 1); $this->assertEquals($node1->getRgt(), 12); $this->assertEquals($node2->getLft(), 2); $this->assertEquals($node2->getRgt(), 7); $this->assertEquals($node3->getLft(), 3); $this->assertEquals($node3->getRgt(), 4); $this->assertEquals($node4->getLft(), 5); $this->assertEquals($node4->getRgt(), 6); $this->assertEquals($node5->getLft(), 8); $this->assertEquals($node5->getRgt(), 11); $this->assertEquals($node6->getLft(), 9); $this->assertEquals($node6->getRgt(), 10); }
/** * Helper method to create a node mock object * * @param $uid * @param integer $lft * @param integer $rgt * @param integer $root * @param string $label * @param string $namespace * @param bool $accessible * @return Tx_PtExtbase_Tree_Node */ public static function createNode($uid, $lft, $rgt, $root, $label = '', $namespace = '', $accessible = true) { $node = new Tx_PtExtbase_Tests_Unit_Tree_NodeMock($uid, $label, $namespace); $node->setLft($lft); $node->setRgt($rgt); $node->setRoot($root); $node->setAccessible($accessible); return $node; }
/** @test */ public function saveTreeCallsRemoveInRepositoryIfNodesShouldBeRemoved() { $rootNodeMock = $this->getMock('Tx_PtExtbase_Tree_Node', array('getSubNodes'), array(), '', false); $rootNodeMock->expects($this->any())->method('getSubNodes')->will($this->returnValue(array())); $nodeMockUncloned = Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode(1, 2, 1, 1); $nodeMock = clone $nodeMockUncloned; $treeMock = $this->getMock('Tx_PtExtbase_Tree_Tree', array('getDeletedNodes', 'getRoot', 'getNamespace'), array(), '', false); $treeMock->expects($this->any())->method('getNamespace')->will($this->returnValue('namespace')); $treeMock->expects($this->any())->method('getDeletedNodes')->will($this->returnValue(array($nodeMock))); $treeMock->expects($this->any())->method('getRoot')->will($this->returnValue($rootNodeMock)); $nodeRepositoryMock = $this->getMock('Tx_PtExtbase_Tree_NodeRepository', array('remove', 'update', 'updateOrAdd'), array(), '', false); $nodeRepositoryMock->expects($this->once())->method('remove')->with($nodeMock); $nodeRepositoryMock->expects($this->any())->method('updateOrAdd'); $nestedSetTreeStorage = new Tx_PtExtbase_Tree_NestedSetTreeStorage($nodeRepositoryMock); $nestedSetTreeStorage->saveTree($treeMock); }
/** * @return Tx_PtExtbase_Tree_Tree */ protected function getTestTree() { $node1 = Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode('1', 0, 0, 1, '1'); $node2 = Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode('2', 0, 0, 1, '2'); $node3 = Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode('3', 0, 0, 1, '3'); $node4 = Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode('4', 0, 0, 1, '4'); $node5 = Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode('5', 0, 0, 1, '5'); $node6 = Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode('6', 0, 0, 1, '6'); $node1->addChild($node2); $node2->setParent($node1); $node1->addChild($node5); $node5->setParent($node1); $node2->addChild($node3); $node3->setParent($node2); $node2->addChild($node4); $node4->setParent($node2); $node5->addChild($node6); $node6->setParent($node5); $tree = Tx_PtExtbase_Tree_Tree::getInstanceByRootNode($node1); return $tree; }
/** @test */ public function deletingNodeFromTreeAddsDeletedNodesToListOfDeletedNodes() { $rootNode = new Tx_PtExtbase_Tests_Unit_Tree_NodeMock(1); $firstChild = new Tx_PtExtbase_Tests_Unit_Tree_NodeMock(2); $secondChild = new Tx_PtExtbase_Tests_Unit_Tree_NodeMock(3); $thirdChild = new Tx_PtExtbase_Tests_Unit_Tree_NodeMock(4); $fourthChild = new Tx_PtExtbase_Tests_Unit_Tree_NodeMock(5); $thirdChild->addChild($fourthChild); $firstChild->addChild($secondChild); $firstChild->addChild($thirdChild); $rootNode->addChild($firstChild); $tree = Tx_PtExtbase_Tree_Tree::getInstanceByRootNode($rootNode); $tree->deleteNode($thirdChild); $this->assertTrue(in_array($thirdChild, $tree->getDeletedNodes())); $this->assertTrue(in_array($fourthChild, $tree->getDeletedNodes())); }
/** * Helper method to return a wrong sorted set of nodes * * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage */ protected static function buildWrongSortedSetOfNodes() { $setOfNodes = new \TYPO3\CMS\Extbase\Persistence\ObjectStorage(); $setOfNodes->attach(Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode(5, 8, 11, 1, '5')); $setOfNodes->attach(Tx_PtExtbase_Tests_Unit_Tree_NodeMock::createNode(6, 9, 10, 1, '6')); return $setOfNodes; }