summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/Controller/AutoCompleteController.php3
-rw-r--r--tests/Core/Controller/AutoCompleteControllerTest.php29
2 files changed, 31 insertions, 1 deletions
diff --git a/core/Controller/AutoCompleteController.php b/core/Controller/AutoCompleteController.php
index 1ed326fb3ef..2e01f85c639 100644
--- a/core/Controller/AutoCompleteController.php
+++ b/core/Controller/AutoCompleteController.php
@@ -69,8 +69,9 @@ class AutoCompleteController extends Controller {
// result from search() – thus nothing else to do here.
list($results,) = $this->collaboratorSearch->search($search, $shareTypes, false, $limit, 0);
- // there won't be exact matches without a search string
+ $exactMatches = $results['exact'];
unset($results['exact']);
+ $results = array_merge_recursive($exactMatches, $results);
$sorters = array_reverse(explode('|', $sorter));
$this->autoCompleteManager->runSorters($sorters, $results, [
diff --git a/tests/Core/Controller/AutoCompleteControllerTest.php b/tests/Core/Controller/AutoCompleteControllerTest.php
index 06d0bf5241d..bcd0d6e1cd3 100644
--- a/tests/Core/Controller/AutoCompleteControllerTest.php
+++ b/tests/Core/Controller/AutoCompleteControllerTest.php
@@ -86,4 +86,33 @@ class AutoCompleteControllerTest extends TestCase {
$this->assertEquals($expected, $list); // has better error output…
$this->assertSame($expected, $list);
}
+
+ public function testGetWithExactMatch() {
+ $searchResults = [
+ 'exact' => [
+ 'users' => [
+ ['label' => 'Bob Y.', 'value' => ['shareWith' => 'bob']],
+ ],
+ 'robots' => [],
+ ],
+ 'users' => [
+ ['label' => 'Robert R.', 'value' => ['shareWith' => 'bobby']],
+ ],
+ ];
+
+ $expected = [
+ [ 'id' => 'bob', 'label' => 'Bob Y.', 'source' => 'users'],
+ [ 'id' => 'bobby', 'label' => 'Robert R.', 'source' => 'users'],
+ ];
+
+ $this->collaboratorSearch->expects($this->once())
+ ->method('search')
+ ->willReturn([$searchResults, false]);
+
+ $response = $this->controller->get('bob', 'files', '42', null);
+
+ $list = $response->getData();
+ $this->assertEquals($expected, $list); // has better error output…
+ $this->assertSame($expected, $list);
+ }
}