Fixed search query with multiple assignees (nested OR conditions)

This commit is contained in:
Frederic Guillot
2016-07-16 19:15:26 -04:00
parent 4364559805
commit 3aa0f85748
5 changed files with 38 additions and 10 deletions

View File

@@ -8,6 +8,7 @@ use Kanboard\Filter\TaskTitleFilter;
use Kanboard\Model\ProjectModel;
use Kanboard\Model\TaskCreationModel;
use Kanboard\Model\TaskFinderModel;
use Kanboard\Model\UserModel;
class LexerBuilderTest extends Base
{
@@ -123,4 +124,29 @@ class LexerBuilderTest extends Base
$this->assertCount(1, $tasks);
$this->assertEquals('Test', $tasks[0]['title']);
}
public function testWithOrCriteria()
{
$taskFinder = new TaskFinderModel($this->container);
$taskCreation = new TaskCreationModel($this->container);
$projectModel = new ProjectModel($this->container);
$userModel = new UserModel($this->container);
$query = $taskFinder->getExtendedQuery();
$this->assertEquals(2, $userModel->create(array('username' => 'foobar', 'name' => 'Foo Bar')));
$this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
$this->assertEquals(1, $taskCreation->create(array('title' => 'Test 1', 'project_id' => 1, 'owner_id' => 2)));
$this->assertEquals(2, $taskCreation->create(array('title' => 'Test 2', 'project_id' => 1, 'owner_id' => 1)));
$this->assertEquals(3, $taskCreation->create(array('title' => 'Test 3', 'project_id' => 1, 'owner_id' => 0)));
$builder = new LexerBuilder();
$builder->withFilter(new TaskAssigneeFilter());
$builder->withFilter(new TaskTitleFilter(), true);
$builder->withQuery($query);
$tasks = $builder->build('assignee:admin assignee:foobar')->toArray();
$this->assertCount(2, $tasks);
$this->assertEquals('Test 1', $tasks[0]['title']);
$this->assertEquals('Test 2', $tasks[1]['title']);
}
}

View File

@@ -22,8 +22,9 @@ class OrCriteriaTest extends Base
$this->assertEquals(2, $userModel->create(array('username' => 'foobar', 'name' => 'Foo Bar')));
$this->assertEquals(1, $projectModel->create(array('name' => 'Test')));
$this->assertEquals(1, $taskCreation->create(array('title' => 'Test', 'project_id' => 1, 'owner_id' => 2)));
$this->assertEquals(2, $taskCreation->create(array('title' => 'Test', 'project_id' => 1, 'owner_id' => 1)));
$this->assertEquals(1, $taskCreation->create(array('title' => 'Test 1', 'project_id' => 1, 'owner_id' => 2)));
$this->assertEquals(2, $taskCreation->create(array('title' => 'Test 2', 'project_id' => 1, 'owner_id' => 1)));
$this->assertEquals(3, $taskCreation->create(array('title' => 'Test 3', 'project_id' => 1, 'owner_id' => 0)));
$criteria = new OrCriteria();
$criteria->withQuery($query);