summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2015-08-12 22:45:59 -0400
committerFrederic Guillot <fred@kanboard.net>2015-08-12 22:45:59 -0400
commit7e6309dd7e10c669a6e7615fad40efc564c6f1f1 (patch)
tree5b0847b685659d70a5db0caf9c7c5dabd39a1657
parent8d43897e26d0979184978ee731331e051fb086ed (diff)
Improve bug fix
-rw-r--r--app/Model/SubtaskTimeTracking.php15
-rw-r--r--tests/units/SubtaskTimeTrackingTest.php13
2 files changed, 22 insertions, 6 deletions
diff --git a/app/Model/SubtaskTimeTracking.php b/app/Model/SubtaskTimeTracking.php
index 8f8aac94..997031e8 100644
--- a/app/Model/SubtaskTimeTracking.php
+++ b/app/Model/SubtaskTimeTracking.php
@@ -340,17 +340,24 @@ class SubtaskTimeTracking extends Base
public function updateTaskTimeTracking($task_id)
{
$result = $this->calculateSubtaskTime($task_id);
+ $values = array();
- if (empty($result['total_spent']) && empty($result['total_estimated'])) {
+ if ($result['total_spent'] > 0) {
+ $values['time_spent'] = $result['total_spent'];
+ }
+
+ if ($result['total_estimated'] > 0) {
+ $values['time_estimated'] = $result['total_estimated'];
+ }
+
+ if (empty($values)) {
return true;
}
return $this->db
->table(Task::TABLE)
->eq('id', $task_id)
- ->sumColumn('time_spent', $result['total_spent'])
- ->sumColumn('time_estimated', $result['total_estimated'])
- ->update();
+ ->update($values);
}
/**
diff --git a/tests/units/SubtaskTimeTrackingTest.php b/tests/units/SubtaskTimeTrackingTest.php
index 661812d4..94f2ce54 100644
--- a/tests/units/SubtaskTimeTrackingTest.php
+++ b/tests/units/SubtaskTimeTrackingTest.php
@@ -205,6 +205,7 @@ class SubtaskTimeTrackingTest extends Base
$this->assertEquals(1, $tc->create(array('title' => 'test 1', 'project_id' => 1)));
$this->assertEquals(2, $tc->create(array('title' => 'test 2', 'project_id' => 1, 'time_estimated' => 1.5, 'time_spent' => 0.5)));
+ $this->assertEquals(3, $tc->create(array('title' => 'test 2', 'project_id' => 1, 'time_estimated' => 4, 'time_spent' => 2)));
$this->assertEquals(1, $s->create(array('title' => 'subtask #1', 'task_id' => 1, 'time_spent' => 2.2)));
$this->assertEquals(2, $s->create(array('title' => 'subtask #2', 'task_id' => 1, 'time_estimated' => 1)));
@@ -212,8 +213,11 @@ class SubtaskTimeTrackingTest extends Base
$this->assertEquals(3, $s->create(array('title' => 'subtask #3', 'task_id' => 2, 'time_spent' => 3.4)));
$this->assertEquals(4, $s->create(array('title' => 'subtask #4', 'task_id' => 2, 'time_estimated' => 1.25)));
+ $this->assertEquals(5, $s->create(array('title' => 'subtask #5', 'task_id' => 3, 'time_spent' => 8)));
+
$st->updateTaskTimeTracking(1);
$st->updateTaskTimeTracking(2);
+ $st->updateTaskTimeTracking(3);
$task = $tf->getById(1);
$this->assertNotEmpty($task);
@@ -222,8 +226,13 @@ class SubtaskTimeTrackingTest extends Base
$task = $tf->getById(2);
$this->assertNotEmpty($task);
- $this->assertEquals(3.9, $task['time_spent'], 'Total spent', 0.01);
- $this->assertEquals(2.75, $task['time_estimated'], 'Total estimated', 0.01);
+ $this->assertEquals(3.4, $task['time_spent'], 'Total spent', 0.01);
+ $this->assertEquals(1.25, $task['time_estimated'], 'Total estimated', 0.01);
+
+ $task = $tf->getById(3);
+ $this->assertNotEmpty($task);
+ $this->assertEquals(4, $task['time_estimated']);
+ $this->assertEquals(8, $task['time_spent']);
}
public function testGetCalendarEvents()