Move API calls for task metadata to a separate class

This commit is contained in:
Frederic Guillot 2016-07-31 15:10:42 -04:00
parent 9f2ef84cd0
commit 86c950743f
No known key found for this signature in database
GPG Key ID: 92D77191BA7FBC99
5 changed files with 86 additions and 64 deletions

View File

@ -0,0 +1,38 @@
<?php
namespace Kanboard\Api\Procedure;
use Kanboard\Api\Authorization\TaskAuthorization;
/**
* Class TaskMetadataProcedure
*
* @package Kanboard\Api\Procedure
* @author Frederic Guillot
*/
class TaskMetadataProcedure extends BaseProcedure
{
public function getTaskMetadata($task_id)
{
TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'getTask', $task_id);
return $this->taskMetadataModel->getAll($task_id);
}
public function getTaskMetadataByName($task_id, $name)
{
TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'getTask', $task_id);
return $this->taskMetadataModel->get($task_id, $name);
}
public function saveTaskMetadata($task_id, array $values)
{
TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'updateTask', $task_id);
return $this->taskMetadataModel->save($task_id, $values);
}
public function removeTaskMetadata($task_id, $name)
{
TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'updateTask', $task_id);
return $this->taskMetadataModel->remove($task_id, $name);
}
}

View File

@ -6,7 +6,6 @@ use Kanboard\Api\Authorization\ProjectAuthorization;
use Kanboard\Api\Authorization\TaskAuthorization;
use Kanboard\Filter\TaskProjectFilter;
use Kanboard\Model\TaskModel;
use Kanboard\Model\TaskMetadataModel;
/**
* Task API controller
@ -16,30 +15,6 @@ use Kanboard\Model\TaskMetadataModel;
*/
class TaskProcedure extends BaseProcedure
{
public function getTaskMetadata($task_id)
{
TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'getTask', $task_id);
return $this->taskMetadataModel->getAll($task_id);
}
public function getTaskMetadataByName($task_id, $name)
{
TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'getTask', $task_id);
return $this->taskMetadataModel->get($task_id, $name);
}
public function saveTaskMetadata($task_id, array $values)
{
TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'updateTask', $task_id);
return $this->taskMetadataModel->save($task_id, $values);
}
public function removeTaskMetadata($task_id, $name)
{
TaskAuthorization::getInstance($this->container)->check($this->getClassName(), 'updateTask', $task_id);
return $this->taskMetadataModel->remove($task_id, $name);
}
public function searchTasks($project_id, $query)
{
ProjectAuthorization::getInstance($this->container)->check($this->getClassName(), 'searchTasks', $project_id);
@ -117,7 +92,7 @@ class TaskProcedure extends BaseProcedure
$recurrence_basedate = 0, $reference = '')
{
ProjectAuthorization::getInstance($this->container)->check($this->getClassName(), 'createTask', $project_id);
if ($owner_id !== 0 && ! $this->projectPermissionModel->isAssignable($project_id, $owner_id)) {
return false;
}

View File

@ -22,6 +22,7 @@ use Kanboard\Api\Procedure\ProjectPermissionProcedure;
use Kanboard\Api\Procedure\SubtaskProcedure;
use Kanboard\Api\Procedure\SubtaskTimeTrackingProcedure;
use Kanboard\Api\Procedure\SwimlaneProcedure;
use Kanboard\Api\Procedure\TaskMetadataProcedure;
use Kanboard\Api\Procedure\TaskProcedure;
use Kanboard\Api\Procedure\TaskLinkProcedure;
use Kanboard\Api\Procedure\UserProcedure;
@ -69,6 +70,7 @@ class ApiProvider implements ServiceProviderInterface
->withObject(new TaskProcedure($container))
->withObject(new TaskLinkProcedure($container))
->withObject(new TaskExternalLinkProcedure($container))
->withObject(new TaskMetadataProcedure($container))
->withObject(new UserProcedure($container))
->withObject(new GroupProcedure($container))
->withObject(new GroupMemberProcedure($container))

View File

@ -0,0 +1,45 @@
<?php
require_once __DIR__.'/BaseProcedureTest.php';
class TaskMetadataProcedureTest extends BaseProcedureTest
{
protected $projectName = 'My project to test tasks metadata';
protected $metaKey = 'MyTestMetaKey';
public function testAll()
{
$this->assertCreateTeamProject();
$this->assertCreateTask();
$this->assertSaveTaskMetadata();
$this->assertGetTaskMetadata();
$this->assertGetTaskMetadataByName();
$this->assertRemoveTaskMetadata();
}
public function assertSaveTaskMetadata()
{
$this->assertTrue($this->app->saveTaskMetadata($this->taskId, array($this->metaKey => 'metaValue1')));
}
public function assertGetTaskMetadata()
{
$metaData = $this->app->getTaskMetadata(($this->taskId));
$this->assertArrayHasKey($this->metaKey, $metaData);
$this->assertEquals('metaValue1', $metaData[$this->metaKey]);
}
public function assertGetTaskMetadataByName()
{
$metaValue = $this->app->getTaskMetadataByName($this->taskId, $this->metaKey);
$this->assertEquals('metaValue1', $metaValue, 'Did not return correct metadata value');
}
public function assertRemoveTaskMetadata()
{
$result = $this->app->removeTaskMetadata($this->taskId, $this->metaKey);
$this->assertTrue($result, 'Did not remove metakey with success');
$metaValue = $this->app->getTaskMetadataByName($this->taskId, $this->metaKey);
$this->assertEquals('', $metaValue, 'Did not return an empty string due to metadata being deleted');
}
}

View File

@ -5,7 +5,6 @@ require_once __DIR__.'/BaseProcedureTest.php';
class TaskProcedureTest extends BaseProcedureTest
{
protected $projectName = 'My project to test tasks';
protected $metaKey = 'MyTestMetaKey';
public function testAll()
{
@ -16,43 +15,6 @@ class TaskProcedureTest extends BaseProcedureTest
$this->assertGetTaskByReference();
$this->assertGetAllTasks();
$this->assertOpenCloseTask();
$this->assertSaveTaskMetadata();
$this->assertGetTaskMetadata();
$this->assertGetTaskMetadataByName();
$this->assertRemoveTaskMetadata();
}
public function assertSaveTaskMetadata()
{
$createMetaKey = $this->app->saveTaskMetadata($this->taskId, array($this->metaKey => 'metaValue1'));
$this->assertTrue($createMetaKey);
}
public function assertGetTaskMetadata()
{
$createMetaKey = $this->app->saveTaskMetadata($this->taskId, array($this->metaKey => 'metaValue1'));
$this->assertTrue($createMetaKey,'Did not create metakey with success');
$metaData = $this->app->getTaskMetadata(($this->taskId));
$this->assertArrayHasKey($this->metaKey, $metaData);
$this->assertEquals('metaValue1', $metaData[$this->metaKey]);
}
public function assertGetTaskMetadataByName()
{
$createMetaKey = $this->app->saveTaskMetadata($this->taskId, array($this->metaKey => 'metaValue1'));
$this->assertTrue($createMetaKey,'Did not create metakey with success');
$metaValue = $this->app->getTaskMetadataByName($this->taskId,$this->metaKey);
$this->assertEquals('metaValue1', $metaValue, 'Did not return correct metadata value');
}
public function assertRemoveTaskMetadata()
{
$createMetaKey = $this->app->saveTaskMetadata($this->taskId, array($this->metaKey => 'metaValue1'));
$this->assertTrue($createMetaKey,'Did not create metakey with success');
$metaValue = $this->app->removeTaskMetadata($this->taskId,$this->metaKey);
$this->assertTrue($metaValue,'Did not remove metakey with success');
$metaValue = $this->app->getTaskMetadataByName($this->taskId,$this->metaKey);
$this->assertEquals('',$metaValue,'Did not return an empty string due to metadata being deleted');
}
public function assertUpdateTask()