Browse Source

Don't accept negative moves

And bail early, rather than deal with it later
AD7six 11 years ago
parent
commit
acaee791eb
2 changed files with 10 additions and 16 deletions
  1. 8 14
      src/ORM/Behavior/TreeBehavior.php
  2. 2 2
      tests/TestCase/ORM/Behavior/TreeBehaviorTest.php

+ 8 - 14
src/ORM/Behavior/TreeBehavior.php

@@ -541,6 +541,10 @@ class TreeBehavior extends Behavior
      */
     public function moveUp(Entity $node, $number = 1)
     {
+        if ($number < 1) {
+            return false;
+        }
+
         return $this->_table->connection()->transactional(function () use ($node, $number) {
             $this->_ensureFields($node);
             return $this->_moveUp($node, $number);
@@ -557,13 +561,6 @@ class TreeBehavior extends Behavior
      */
     protected function _moveUp($node, $number)
     {
-        if (!$number) {
-            return false;
-        }
-        if ($number < 0) {
-            return $node;
-        }
-
         $config = $this->config();
         list($parent, $left, $right) = [$config['parent'], $config['left'], $config['right']];
         list($nodeParent, $nodeLeft, $nodeRight) = array_values($node->extract([$parent, $left, $right]));
@@ -625,6 +622,10 @@ class TreeBehavior extends Behavior
      */
     public function moveDown(Entity $node, $number = 1)
     {
+        if ($number < 1) {
+            return false;
+        }
+
         return $this->_table->connection()->transactional(function () use ($node, $number) {
             $this->_ensureFields($node);
             return $this->_moveDown($node, $number);
@@ -641,13 +642,6 @@ class TreeBehavior extends Behavior
      */
     protected function _moveDown($node, $number)
     {
-        if (!$number) {
-            return false;
-        }
-        if ($number < 0) {
-            return $node;
-        }
-
         $config = $this->config();
         list($parent, $left, $right) = [$config['parent'], $config['left'], $config['right']];
 

+ 2 - 2
tests/TestCase/ORM/Behavior/TreeBehaviorTest.php

@@ -353,8 +353,7 @@ class TreeBehaviorTest extends TestCase
 
         // edge cases
         $this->assertFalse($this->table->moveUp($table->get(1), 0));
-        $node = $this->table->moveUp($table->get(1), -10);
-        $this->assertEquals(['lft' => 1, 'rght' => 10], $node->extract(['lft', 'rght']));
+        $this->assertFalse($this->table->moveUp($table->get(1), -10));
         $expected = [
             ' 1:10 -  1:Link 1',
             '_ 2: 3 -  2:Link 2',
@@ -484,6 +483,7 @@ class TreeBehaviorTest extends TestCase
 
         // edge cases
         $this->assertFalse($this->table->moveDown($table->get(8), 0));
+        $this->assertFalse($this->table->moveDown($table->get(8), -10));
         $expected = [
             ' 1:10 -  1:Link 1',
             '_ 2: 3 -  2:Link 2',