Fix bug when moving subtasks with non consecutive positions

This commit is contained in:
Frederic Guillot
2015-04-18 15:10:40 -04:00
parent 7b7ea56460
commit 54449d48c4
3 changed files with 89 additions and 16 deletions

View File

@@ -24,6 +24,7 @@ class SubTaskTest extends Base
$this->assertEquals(2, $s->create(array('title' => 'subtask #2', 'task_id' => 1)));
$this->assertEquals(3, $s->create(array('title' => 'subtask #3', 'task_id' => 1)));
// Check positions
$subtask = $s->getById(1);
$this->assertNotEmpty($subtask);
$this->assertEquals(1, $subtask['position']);
@@ -36,8 +37,10 @@ class SubTaskTest extends Base
$this->assertNotEmpty($subtask);
$this->assertEquals(3, $subtask['position']);
// Move up
$this->assertTrue($s->moveUp(1, 2));
// Check positions
$subtask = $s->getById(1);
$this->assertNotEmpty($subtask);
$this->assertEquals(2, $subtask['position']);
@@ -50,7 +53,24 @@ class SubTaskTest extends Base
$this->assertNotEmpty($subtask);
$this->assertEquals(3, $subtask['position']);
// We can't move up #2
$this->assertFalse($s->moveUp(1, 2));
// Test remove
$this->assertTrue($s->remove(1));
$this->assertTrue($s->moveUp(1, 3));
// Check positions
$subtask = $s->getById(1);
$this->assertEmpty($subtask);
$subtask = $s->getById(2);
$this->assertNotEmpty($subtask);
$this->assertEquals(2, $subtask['position']);
$subtask = $s->getById(3);
$this->assertNotEmpty($subtask);
$this->assertEquals(1, $subtask['position']);
}
public function testMoveDown()
@@ -66,8 +86,10 @@ class SubTaskTest extends Base
$this->assertEquals(2, $s->create(array('title' => 'subtask #2', 'task_id' => 1)));
$this->assertEquals(3, $s->create(array('title' => 'subtask #3', 'task_id' => 1)));
// Move down #1
$this->assertTrue($s->moveDown(1, 1));
// Check positions
$subtask = $s->getById(1);
$this->assertNotEmpty($subtask);
$this->assertEquals(2, $subtask['position']);
@@ -80,7 +102,24 @@ class SubTaskTest extends Base
$this->assertNotEmpty($subtask);
$this->assertEquals(3, $subtask['position']);
// We can't move down #3
$this->assertFalse($s->moveDown(1, 3));
// Test remove
$this->assertTrue($s->remove(1));
$this->assertTrue($s->moveDown(1, 2));
// Check positions
$subtask = $s->getById(1);
$this->assertEmpty($subtask);
$subtask = $s->getById(2);
$this->assertNotEmpty($subtask);
$this->assertEquals(2, $subtask['position']);
$subtask = $s->getById(3);
$this->assertNotEmpty($subtask);
$this->assertEquals(1, $subtask['position']);
}
public function testDuplicate()