From 18cb7ad0a4a96be63030f5207b74a195c8b6cd6c Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Fri, 24 Jun 2016 15:43:34 -0400 Subject: Expose tags to the user interface (first prototype) --- app/Model/TaskModificationModel.php | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'app/Model/TaskModificationModel.php') diff --git a/app/Model/TaskModificationModel.php b/app/Model/TaskModificationModel.php index 762af2c5..0fc3617e 100644 --- a/app/Model/TaskModificationModel.php +++ b/app/Model/TaskModificationModel.php @@ -85,6 +85,11 @@ class TaskModificationModel extends Base */ public function prepare(array &$values) { + if (isset($values['tags'])) { + $this->taskTagModel->save($values['project_id'], $values['id'], $values['tags']); + unset($values['tags']); + } + $values = $this->dateParser->convert($values, array('date_due')); $values = $this->dateParser->convert($values, array('date_started'), true); -- cgit v1.2.3 From 49d312d5a41ccfe23432ef0f00a6ae79c8fd558f Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Fri, 24 Jun 2016 18:35:33 -0400 Subject: Added unit test when updating tags for a task --- app/Model/TaskModificationModel.php | 29 +++++++++++++++++++-------- tests/units/Model/TaskModificationTest.php | 32 +++++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 9 deletions(-) (limited to 'app/Model/TaskModificationModel.php') diff --git a/app/Model/TaskModificationModel.php b/app/Model/TaskModificationModel.php index 0fc3617e..1b176a41 100644 --- a/app/Model/TaskModificationModel.php +++ b/app/Model/TaskModificationModel.php @@ -25,6 +25,7 @@ class TaskModificationModel extends Base { $original_task = $this->taskFinderModel->getById($values['id']); + $this->updateTags($values, $original_task); $this->prepare($values); $result = $this->db->table(TaskModel::TABLE)->eq('id', $original_task['id'])->update($values); @@ -80,16 +81,11 @@ class TaskModificationModel extends Base /** * Prepare data before task modification * - * @access public - * @param array $values Form values + * @access protected + * @param array $values */ - public function prepare(array &$values) + protected function prepare(array &$values) { - if (isset($values['tags'])) { - $this->taskTagModel->save($values['project_id'], $values['id'], $values['tags']); - unset($values['tags']); - } - $values = $this->dateParser->convert($values, array('date_due')); $values = $this->dateParser->convert($values, array('date_started'), true); @@ -99,4 +95,21 @@ class TaskModificationModel extends Base $values['date_modification'] = time(); } + + /** + * Update tags + * + * @access protected + * @param array $values + * @param array $original_task + */ + protected function updateTags(array &$values, array $original_task) + { + if (isset($values['tags'])) { + $this->taskTagModel->save($original_task['project_id'], $values['id'], $values['tags']); + unset($values['tags']); + } else { + $this->taskTagModel->save($original_task['project_id'], $values['id'], array()); + } + } } diff --git a/tests/units/Model/TaskModificationTest.php b/tests/units/Model/TaskModificationTest.php index a8ace25a..5cbc44e6 100644 --- a/tests/units/Model/TaskModificationTest.php +++ b/tests/units/Model/TaskModificationTest.php @@ -7,6 +7,7 @@ use Kanboard\Model\TaskCreationModel; use Kanboard\Model\TaskModificationModel; use Kanboard\Model\TaskFinderModel; use Kanboard\Model\ProjectModel; +use Kanboard\Model\TaskTagModel; class TaskModificationTest extends Base { @@ -45,7 +46,6 @@ class TaskModificationTest extends Base $p = new ProjectModel($this->container); $tc = new TaskCreationModel($this->container); $tm = new TaskModificationModel($this->container); - $tf = new TaskFinderModel($this->container); $this->assertEquals(1, $p->create(array('name' => 'test'))); $this->assertEquals(1, $tc->create(array('title' => 'test', 'project_id' => 1))); @@ -280,4 +280,34 @@ class TaskModificationTest extends Base $task = $tf->getById(1); $this->assertEquals(13.3, $task['time_spent']); } + + public function testChangeTags() + { + $projectModel = new ProjectModel($this->container); + $taskCreationModel = new TaskCreationModel($this->container); + $taskModificationModel = new TaskModificationModel($this->container); + $taskTagModel = new TaskTagModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'test'))); + $this->assertEquals(1, $taskCreationModel->create(array('title' => 'test', 'project_id' => 1, 'tags' => array('tag1', 'tag2')))); + $this->assertTrue($taskModificationModel->update(array('id' => 1, 'tags' => array('tag2')))); + + $tags = $taskTagModel->getList(1); + $this->assertEquals(array(2 => 'tag2'), $tags); + } + + public function testRemoveAllTags() + { + $projectModel = new ProjectModel($this->container); + $taskCreationModel = new TaskCreationModel($this->container); + $taskModificationModel = new TaskModificationModel($this->container); + $taskTagModel = new TaskTagModel($this->container); + + $this->assertEquals(1, $projectModel->create(array('name' => 'test'))); + $this->assertEquals(1, $taskCreationModel->create(array('title' => 'test', 'project_id' => 1, 'tags' => array('tag1', 'tag2')))); + $this->assertTrue($taskModificationModel->update(array('id' => 1))); + + $tags = $taskTagModel->getList(1); + $this->assertEquals(array(), $tags); + } } -- cgit v1.2.3 From 853189a43fff8b8b64f18029a35ac910b14932e8 Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sat, 2 Jul 2016 11:50:32 -0400 Subject: Do not create empty tags and remove tags only when necessary --- app/Helper/TaskHelper.php | 1 + app/Model/TaskModificationModel.php | 2 - app/Model/TaskTagModel.php | 1 + tests/units/Model/TaskModificationModelTest.php | 322 ++++++++++++++++++++++++ tests/units/Model/TaskModificationTest.php | 313 ----------------------- tests/units/Model/TaskTagModelTest.php | 2 +- 6 files changed, 325 insertions(+), 316 deletions(-) create mode 100644 tests/units/Model/TaskModificationModelTest.php delete mode 100644 tests/units/Model/TaskModificationTest.php (limited to 'app/Model/TaskModificationModel.php') diff --git a/app/Helper/TaskHelper.php b/app/Helper/TaskHelper.php index ce39eb2a..84b41e42 100644 --- a/app/Helper/TaskHelper.php +++ b/app/Helper/TaskHelper.php @@ -70,6 +70,7 @@ class TaskHelper extends Base $options = $this->tagModel->getAssignableList($project['id']); $html = $this->helper->form->label(t('Tags'), 'tags[]'); + $html .= ''; $html .= '