Improve task status filter

This commit is contained in:
Frederic Guillot 2016-10-09 20:50:26 -04:00
parent 71ad04cd66
commit 9eefe6a358
No known key found for this signature in database
GPG Key ID: 92D77191BA7FBC99
2 changed files with 119 additions and 1 deletions

View File

@ -34,7 +34,7 @@ class TaskStatusFilter extends BaseFilter implements FilterInterface
{
if ($this->value === 'open' || $this->value === 'closed') {
$this->query->eq(TaskModel::TABLE.'.is_active', $this->value === 'open' ? TaskModel::STATUS_OPEN : TaskModel::STATUS_CLOSED);
} else {
} elseif (is_int($this->value) || ctype_digit($this->value)) {
$this->query->eq(TaskModel::TABLE.'.is_active', $this->value);
}

View File

@ -0,0 +1,118 @@
<?php
use Kanboard\Filter\TaskStatusFilter;
use Kanboard\Model\ProjectModel;
use Kanboard\Model\TaskCreationModel;
use Kanboard\Model\TaskFinderModel;
use Kanboard\Model\TaskModel;
require_once __DIR__.'/../Base.php';
class TaskStatusFilterTest extends Base
{
public function testWithOpenValue()
{
$taskFinderModel = new TaskFinderModel($this->container);
$projectModel = new ProjectModel($this->container);
$taskCreationModel = new TaskCreationModel($this->container);
$query = $taskFinderModel->getExtendedQuery();
$this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
$this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test1')));
$this->assertEquals(2, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test2', 'is_active' => TaskModel::STATUS_CLOSED)));
$filter = new TaskStatusFilter();
$filter->withQuery($query);
$filter->withValue('open');
$filter->apply();
$tasks = $query->findAll();
$this->assertCount(1, $tasks);
$this->assertEquals('test1', $tasks[0]['title']);
}
public function testWithOpenNumericValue()
{
$taskFinderModel = new TaskFinderModel($this->container);
$projectModel = new ProjectModel($this->container);
$taskCreationModel = new TaskCreationModel($this->container);
$query = $taskFinderModel->getExtendedQuery();
$this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
$this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test1')));
$this->assertEquals(2, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test2', 'is_active' => TaskModel::STATUS_CLOSED)));
$filter = new TaskStatusFilter();
$filter->withQuery($query);
$filter->withValue(1);
$filter->apply();
$tasks = $query->findAll();
$this->assertCount(1, $tasks);
$this->assertEquals('test1', $tasks[0]['title']);
}
public function testWithClosedValue()
{
$taskFinderModel = new TaskFinderModel($this->container);
$projectModel = new ProjectModel($this->container);
$taskCreationModel = new TaskCreationModel($this->container);
$query = $taskFinderModel->getExtendedQuery();
$this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
$this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test1')));
$this->assertEquals(2, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test2', 'is_active' => TaskModel::STATUS_CLOSED)));
$filter = new TaskStatusFilter();
$filter->withQuery($query);
$filter->withValue('closed');
$filter->apply();
$tasks = $query->findAll();
$this->assertCount(1, $tasks);
$this->assertEquals('test2', $tasks[0]['title']);
}
public function testWithClosedNumericValue()
{
$taskFinderModel = new TaskFinderModel($this->container);
$projectModel = new ProjectModel($this->container);
$taskCreationModel = new TaskCreationModel($this->container);
$query = $taskFinderModel->getExtendedQuery();
$this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
$this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test1')));
$this->assertEquals(2, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test2', 'is_active' => TaskModel::STATUS_CLOSED)));
$filter = new TaskStatusFilter();
$filter->withQuery($query);
$filter->withValue(0);
$filter->apply();
$tasks = $query->findAll();
$this->assertCount(1, $tasks);
$this->assertEquals('test2', $tasks[0]['title']);
}
public function testWithAllValue()
{
$taskFinderModel = new TaskFinderModel($this->container);
$projectModel = new ProjectModel($this->container);
$taskCreationModel = new TaskCreationModel($this->container);
$query = $taskFinderModel->getExtendedQuery();
$this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
$this->assertEquals(1, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test1')));
$this->assertEquals(2, $taskCreationModel->create(array('project_id' => 1, 'title' => 'test2', 'is_active' => TaskModel::STATUS_CLOSED)));
$filter = new TaskStatusFilter();
$filter->withQuery($query);
$filter->withValue('all');
$filter->apply();
$tasks = $query->asc(TaskModel::TABLE.'.title')->findAll();
$this->assertCount(2, $tasks);
$this->assertEquals('test1', $tasks[0]['title']);
$this->assertEquals('test2', $tasks[1]['title']);
}
}