Added unit test when updating tags for a task

This commit is contained in:
Frederic Guillot 2016-06-24 18:35:33 -04:00
parent 16a138c86f
commit 49d312d5a4
No known key found for this signature in database
GPG Key ID: 92D77191BA7FBC99
2 changed files with 52 additions and 9 deletions

View File

@ -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());
}
}
}

View File

@ -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);
}
}