ADD: TaskMovedDateFilter

This commit is contained in:
Christopher Geelen 2016-07-27 15:06:01 +02:00
parent 2474518272
commit 2363da274c
3 changed files with 85 additions and 0 deletions

View File

@ -0,0 +1,38 @@
<?php
namespace Kanboard\Filter;
use Kanboard\Core\Filter\FilterInterface;
use Kanboard\Model\TaskModel;
/**
* Filter tasks by modification date
*
* @package filter
* @author Frederic Guillot
*/
class TaskMovedDateFilter extends BaseDateFilter implements FilterInterface
{
/**
* Get search attribute
*
* @access public
* @return string[]
*/
public function getAttributes()
{
return array('moved');
}
/**
* Apply filter
*
* @access public
* @return FilterInterface
*/
public function apply()
{
$this->applyDateFilter(TaskModel::TABLE.'.date_moved');
return $this;
}
}

View File

@ -21,6 +21,7 @@ use Kanboard\Filter\TaskDueDateFilter;
use Kanboard\Filter\TaskIdFilter;
use Kanboard\Filter\TaskLinkFilter;
use Kanboard\Filter\TaskModificationDateFilter;
use Kanboard\Filter\TaskMovedDateFilter;
use Kanboard\Filter\TaskPriorityFilter;
use Kanboard\Filter\TaskProjectFilter;
use Kanboard\Filter\TaskReferenceFilter;
@ -158,6 +159,9 @@ class FilterProvider implements ServiceProviderInterface
->withFilter(TaskModificationDateFilter::getInstance()
->setDateParser($c['dateParser'])
)
->withFilter(TaskMovedDateFilter::getInstance()
->setDateParser($c['dateParser'])
)
->withFilter(new TaskProjectFilter())
->withFilter(new TaskReferenceFilter())
->withFilter(new TaskStatusFilter())

View File

@ -0,0 +1,43 @@
<?php
use Kanboard\Filter\TaskMovedDateFilter;
use Kanboard\Model\ProjectModel;
use Kanboard\Model\TaskCreationModel;
use Kanboard\Model\TaskModificationModel;
use Kanboard\Model\TaskFinderModel;
use Kanboard\Model\UserModel;
require_once __DIR__.'/../Base.php';
class TaskMovedDateFilterTest extends Base
{
public function test()
{
$taskFinder = new TaskFinderModel($this->container);
$taskCreation = new TaskCreationModel($this->container);
$taskModification = new TaskModificationModel($this->container);
$projectModel = new ProjectModel($this->container);
$this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
$this->assertEquals(1, $taskCreation->create(array('title' => 'Test1', 'project_id' => 1)));
$this->assertTrue($taskModification->update(array('id' => 1, 'date_moved' => time())));
$this->assertEquals(2, $taskCreation->create(array('title' => 'Test2', 'project_id' => 1)));
$this->assertTrue($taskModification->update(array('id' => 2, 'date_moved' => strtotime('-1days'))));
$this->assertEquals(3, $taskCreation->create(array('title' => 'Test3', 'project_id' => 1)));
$this->assertTrue($taskModification->update(array('id' => 3, 'date_moved' => strtotime('-3days'))));
$query = $taskFinder->getExtendedQuery();
$filter = new TaskMovedDateFilter('>='.date('Y-m-d', strtotime('-1days')));
$filter->setDateParser($this->container['dateParser']);
$filter->withQuery($query)->apply();
$this->assertCount(2, $query->findAll());
$query = $taskFinder->getExtendedQuery();
$filter = new TaskMovedDateFilter('<yesterday');
$filter->setDateParser($this->container['dateParser']);
$filter->withQuery($query)->apply();
$this->assertCount(1, $query->findAll());
}
}