From 25aad121e621f0a6975cd6982c11578e372abec2 Mon Sep 17 00:00:00 2001
From: Arthur Schiwon <blizzz@arthur-schiwon.de>
Date: Tue, 31 Oct 2017 14:58:48 +0100
Subject: [PATCH] meanwhile we can have exact matches. also show those.

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
---
 core/Controller/AutoCompleteController.php    |  3 +-
 .../Controller/AutoCompleteControllerTest.php | 29 +++++++++++++++++++
 2 files changed, 31 insertions(+), 1 deletion(-)

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);
+	}
 }
-- 
GitLab