diff options
-rw-r--r-- | app/Model/Swimlane.php | 21 | ||||
-rw-r--r-- | app/Model/TaskExport.php | 12 | ||||
-rw-r--r-- | tests/units/SwimlaneTest.php | 15 | ||||
-rw-r--r-- | tests/units/TaskExportTest.php | 12 |
4 files changed, 55 insertions, 5 deletions
diff --git a/app/Model/Swimlane.php b/app/Model/Swimlane.php index c9c080af..069f14b6 100644 --- a/app/Model/Swimlane.php +++ b/app/Model/Swimlane.php @@ -157,6 +157,27 @@ class Swimlane extends Base } /** + * Get list of all swimlanes + * + * @access public + * @param integer $project_id Project id + * @return array + */ + public function getSwimlanesList($project_id) + { + $swimlanes = $this->db->table(self::TABLE) + ->eq('project_id', $project_id) + ->orderBy('position', 'asc') + ->listing('id', 'name'); + + $swimlanes[0] = $this->db->table(Project::TABLE) + ->eq('id', $project_id) + ->findOneColumn('default_swimlane'); + + return $swimlanes; + } + + /** * Add a new swimlane * * @access public diff --git a/app/Model/TaskExport.php b/app/Model/TaskExport.php index fc581a3c..13a1eddd 100644 --- a/app/Model/TaskExport.php +++ b/app/Model/TaskExport.php @@ -24,10 +24,11 @@ class TaskExport extends Base public function export($project_id, $from, $to) { $tasks = $this->getTasks($project_id, $from, $to); + $swimlanes = $this->swimlane->getSwimlanesList($project_id); $results = array($this->getColumns()); foreach ($tasks as &$task) { - $results[] = array_values($this->format($task)); + $results[] = array_values($this->format($task, $swimlanes)); } return $results; @@ -50,6 +51,7 @@ class TaskExport extends Base projects.name AS project_name, tasks.is_active, project_has_categories.name AS category_name, + tasks.swimlane_id, columns.title AS column_title, tasks.position, tasks.color_id, @@ -89,15 +91,18 @@ class TaskExport extends Base * Format the output of a task array * * @access public - * @param array $task Task properties + * @param array $task Task properties + * @param array $swimlanes List of swimlanes * @return array */ - public function format(array &$task) + public function format(array &$task, array &$swimlanes) { $colors = $this->color->getList(); $task['is_active'] = $task['is_active'] == Task::STATUS_OPEN ? e('Open') : e('Closed'); $task['color_id'] = $colors[$task['color_id']]; + $task['score'] = $task['score'] ?: 0; + $task['swimlane_id'] = isset($swimlanes[$task['swimlane_id']]) ? $swimlanes[$task['swimlane_id']] : '?'; $this->dateParser->format($task, array('date_due', 'date_modification', 'date_creation', 'date_started', 'date_completed'), 'Y-m-d'); @@ -117,6 +122,7 @@ class TaskExport extends Base e('Project'), e('Status'), e('Category'), + e('Swimlane'), e('Column'), e('Position'), e('Color'), diff --git a/tests/units/SwimlaneTest.php b/tests/units/SwimlaneTest.php index 0c0cdfc5..6247c773 100644 --- a/tests/units/SwimlaneTest.php +++ b/tests/units/SwimlaneTest.php @@ -31,6 +31,21 @@ class SwimlaneTest extends Base $this->assertEquals('', $s->getNameById(23)); } + public function testGetList() + { + $p = new Project($this->container); + $s = new Swimlane($this->container); + + $this->assertEquals(1, $p->create(array('name' => 'UnitTest'))); + $this->assertEquals(1, $s->create(1, 'Swimlane #1')); + $this->assertEquals(2, $s->create(1, 'Swimlane #2')); + + $swimlanes = $s->getSwimlanesList(1); + $expected = array('Default swimlane', 'Swimlane #1', 'Swimlane #2'); + + $this->assertEquals($expected, $swimlanes); + } + public function testRename() { $p = new Project($this->container); diff --git a/tests/units/TaskExportTest.php b/tests/units/TaskExportTest.php index fc080c0a..963c031d 100644 --- a/tests/units/TaskExportTest.php +++ b/tests/units/TaskExportTest.php @@ -8,6 +8,7 @@ use Model\TaskExport; use Model\Project; use Model\Category; use Model\User; +use Model\Swimlane; class TaskExportTest extends Base { @@ -17,8 +18,13 @@ class TaskExportTest extends Base $p = new Project($this->container); $c = new Category($this->container); $e = new TaskExport($this->container); + $s = new Swimlane($this->container); $this->assertEquals(1, $p->create(array('name' => 'Export Project'))); + + $this->assertEquals(1, $s->create(1, 'S1')); + $this->assertEquals(2, $s->create(1, 'S2')); + $this->assertNotFalse($c->create(array('name' => 'Category #1', 'project_id' => 1))); $this->assertNotFalse($c->create(array('name' => 'Category #2', 'project_id' => 1))); $this->assertNotFalse($c->create(array('name' => 'Category #3', 'project_id' => 1))); @@ -34,7 +40,8 @@ class TaskExportTest extends Base 'color_id' => rand(0, 1) === 0 ? 'green' : 'purple', 'category_id' => rand(0, 3), 'date_due' => array_rand(array(0, date('Y-m-d'), date('Y-m-d', strtotime('+'.$i.'day')))), - 'score' => rand(0, 21) + 'score' => rand(0, 21), + 'swimlane_id' => rand(0, 2), ); $this->assertEquals($i, $tc->create($task)); @@ -44,6 +51,7 @@ class TaskExportTest extends Base $this->assertEquals($i, count($rows)); $this->assertEquals('Task Id', $rows[0][0]); $this->assertEquals(1, $rows[1][0]); - $this->assertEquals('Task #'.($i - 1), $rows[$i - 1][11]); + $this->assertEquals('Task #'.($i - 1), $rows[$i - 1][12]); + $this->assertTrue(in_array($rows[$i - 1][4], array('Default swimlane', 'S1', 'S2'))); } } |