diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2017-10-31 14:58:48 +0100 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2017-10-31 14:58:48 +0100 |
commit | 25aad121e621f0a6975cd6982c11578e372abec2 (patch) | |
tree | 0fdbaf1af7f1d83d25efe89cb291598573833304 | |
parent | 582d2d36ee9cdbde891000608ff5f68f1efcfda8 (diff) | |
download | nextcloud-server-25aad121e621f0a6975cd6982c11578e372abec2.tar.gz nextcloud-server-25aad121e621f0a6975cd6982c11578e372abec2.zip |
meanwhile we can have exact matches. also show those.
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
-rw-r--r-- | core/Controller/AutoCompleteController.php | 3 | ||||
-rw-r--r-- | tests/Core/Controller/AutoCompleteControllerTest.php | 29 |
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); + } } |