Example #1
0
 public function testDeleteCategory()
 {
     ActiveRecord::clearPool();
     $startingPositions = array();
     $nodes = $this->root->getChildNodes(false, true);
     $nodes->add($this->root);
     $this->root->reload();
     foreach ($nodes as $category) {
         $startingPositions[$category->getID()] = array('lft' => $category->getFieldValue(ActiveTreeNode::LEFT_NODE_FIELD_NAME), 'rgt' => $category->getFieldValue(ActiveTreeNode::RIGHT_NODE_FIELD_NAME), 'parent' => $category == $this->root ? '0' : $category->getFieldValue(ActiveTreeNode::PARENT_NODE_FIELD_NAME)->getID());
     }
     // new node
     $newCategory = Category::getNewInstance($this->root);
     $newCategory->setValueByLang("name", 'en', 'NEWNODE');
     $newCategory->save();
     // nested nodes
     $nestedNodes = array();
     $lastNode = $newCategory;
     foreach (array() as $i) {
         $nestedNodes[$i] = Category::getNewInstance($lastNode);
         $nestedNodes[$i]->setValueByLang("name", 'en', 'TEST ' . rand(1, 1000));
         $nestedNodes[$i]->save();
         $lastNode = $nestedNodes[$i];
     }
     $newCategory->reload();
     // Delete child node
     $newCategory->delete();
     $this->assertFalse($newCategory->isExistingRecord());
     $this->assertFalse($newCategory->isLoaded());
     // Check to see if everything is back to starting values
     $activeTreeNodes = ActiveRecord::retrieveFromPool(get_class($newCategory));
     foreach ($activeTreeNodes as $category) {
         try {
             $category->reload();
         } catch (ARNotFoundException $e) {
             continue;
         }
         if (!$category->getID()) {
             continue;
         }
         $this->assertEqual($category->getFieldValue(ActiveTreeNode::LEFT_NODE_FIELD_NAME), $startingPositions[$category->getID()]['lft']);
         $this->assertEqual($category->getFieldValue(ActiveTreeNode::RIGHT_NODE_FIELD_NAME), $startingPositions[$category->getID()]['rgt']);
         if (!$category->isRoot()) {
             $this->assertEqual($category->getFieldValue(ActiveTreeNode::PARENT_NODE_FIELD_NAME)->getID(), $startingPositions[$category->getID()]['parent']);
         }
     }
 }