Fixed search query with multiple assignees (nested OR conditions)
This commit is contained in:
@@ -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']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user