Skip to content

Commit

Permalink
Implemented deleting a subtree
Browse files Browse the repository at this point in the history
  • Loading branch information
lorenzo committed Mar 29, 2014
1 parent 99c8877 commit 70b10c8
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/Model/Behavior/TreeBehavior.php
Expand Up @@ -118,8 +118,10 @@ public function beforeDelete(Event $event, Entity $entity) {
$diff = $right - $left + 1;

if ($diff > 2) {
$this->_table->deleteAll(['left >=' => $left + 1, 'left <=' => $right - 1]);
return;
$this->_table->deleteAll([
"{$config['left']} >=" => $left + 1,
"{$config['left']} <=" => $right - 1
]);
}

$this->_sync($diff, '-' , "> {$right}");
Expand Down
18 changes: 18 additions & 0 deletions tests/TestCase/Model/Behavior/TreeBehaviorTest.php
Expand Up @@ -522,4 +522,22 @@ public function testDeleteLeaf() {
$expected = $table->find()->order('lft')->hydrate(false)->toArray();
$this->assertEquals($expected, $result);
}


/**
* Tests deleting a subtree
*
* @return void
*/
public function testDeleteSubTree() {
$table = TableRegistry::get('NumberTrees');
$table->addBehavior('Tree');
$entity = $table->get(6);
$this->assertTrue($table->delete($entity));
$result = $table->find()->order('lft')->hydrate(false)->toArray();
$table->recover();
$expected = $table->find()->order('lft')->hydrate(false)->toArray();
$this->assertEquals($expected, $result);
}

}

0 comments on commit 70b10c8

Please sign in to comment.