From 70b10c8bf5080f74d2931885dbd0447727c1c9ce Mon Sep 17 00:00:00 2001 From: Jose Lorenzo Rodriguez Date: Sat, 29 Mar 2014 23:22:22 +0100 Subject: [PATCH] Implemented deleting a subtree --- src/Model/Behavior/TreeBehavior.php | 6 ++++-- .../Model/Behavior/TreeBehaviorTest.php | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/Model/Behavior/TreeBehavior.php b/src/Model/Behavior/TreeBehavior.php index 97f146982b2..a31ddcff153 100644 --- a/src/Model/Behavior/TreeBehavior.php +++ b/src/Model/Behavior/TreeBehavior.php @@ -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}"); diff --git a/tests/TestCase/Model/Behavior/TreeBehaviorTest.php b/tests/TestCase/Model/Behavior/TreeBehaviorTest.php index 0effcb1b156..8db0fe6e6fb 100644 --- a/tests/TestCase/Model/Behavior/TreeBehaviorTest.php +++ b/tests/TestCase/Model/Behavior/TreeBehaviorTest.php @@ -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); + } + }