From b64cdb1cfe46df277080e3cda2b71ed5c3db1297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dani=C3=ABl=20Klabbers?= Date: Mon, 29 Oct 2018 23:01:25 +0100 Subject: [PATCH] fixes author gambit when used with fulltext search, added test to cover (#1620) * fixes author gambit when used with fulltext search, added test to cover * Apply fixes from StyleCI [ci skip] [skip ci] --- .../Discussion/Search/Gambit/AuthorGambit.php | 2 +- .../ListDiscussionControllerTest.php | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/framework/core/src/Discussion/Search/Gambit/AuthorGambit.php b/framework/core/src/Discussion/Search/Gambit/AuthorGambit.php index 0b321448d..a67f76b8c 100644 --- a/framework/core/src/Discussion/Search/Gambit/AuthorGambit.php +++ b/framework/core/src/Discussion/Search/Gambit/AuthorGambit.php @@ -54,6 +54,6 @@ class AuthorGambit extends AbstractRegexGambit $ids[] = $this->users->getIdForUsername($username); } - $search->getQuery()->whereIn('user_id', $ids, 'and', $negate); + $search->getQuery()->whereIn('discussions.user_id', $ids, 'and', $negate); } } diff --git a/framework/core/tests/Api/Controller/ListDiscussionControllerTest.php b/framework/core/tests/Api/Controller/ListDiscussionControllerTest.php index 695b378c2..9ccd265f3 100644 --- a/framework/core/tests/Api/Controller/ListDiscussionControllerTest.php +++ b/framework/core/tests/Api/Controller/ListDiscussionControllerTest.php @@ -13,9 +13,12 @@ namespace Flarum\Tests\Api\Controller; use Flarum\Api\Controller\ListDiscussionsController; use Flarum\Discussion\Discussion; +use Flarum\Tests\Test\Concerns\RetrievesAuthorizedUsers; class ListDiscussionControllerTest extends ApiControllerTestCase { + use RetrievesAuthorizedUsers; + protected $controller = ListDiscussionsController::class; /** @@ -30,4 +33,21 @@ class ListDiscussionControllerTest extends ApiControllerTestCase $this->assertEquals(Discussion::count(), count($data['data'])); } + + /** + * @test + */ + public function can_search_for_author() + { + $user = $this->getNormalUser(); + + $response = $this->callWith([], [ + 'filter' => [ + 'q' => 'author:'.$user->username.' foo' + ], + 'include' => 'mostRelevantPost' + ]); + + $this->assertEquals(200, $response->getStatusCode()); + } }