* * @author Arthur Schiwon * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ namespace Tests\Core\Controller; use OC\Core\Controller\AutoCompleteController; use OCP\Collaboration\AutoComplete\IManager; use OCP\Collaboration\Collaborators\ISearch; use OCP\IConfig; use OCP\IRequest; use Test\TestCase; class AutoCompleteControllerTest extends TestCase { /** @var ISearch|\PHPUnit_Framework_MockObject_MockObject */ protected $collaboratorSearch; /** @var IManager|\PHPUnit_Framework_MockObject_MockObject */ protected $autoCompleteManager; /** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */ protected $config; /** @var AutoCompleteController */ protected $controller; protected function setUp() { parent::setUp(); /** @var IRequest $request */ $request = $this->createMock(IRequest::class); $this->collaboratorSearch = $this->createMock(ISearch::class); $this->autoCompleteManager = $this->createMock(IManager::class); $this->config = $this->createMock(IConfig::class); $this->controller = new AutoCompleteController( 'core', $request, $this->collaboratorSearch, $this->autoCompleteManager, $this->config ); } public function testGet() { $searchResults = [ 'exact' => [ 'users' => [], 'robots' => [], ], 'users' => [ ['label' => 'Alice A.', 'value' => ['shareWith' => 'alice']], ['label' => 'Bob Y.', 'value' => ['shareWith' => 'bob']], ], ]; $expected = [ [ 'id' => 'alice', 'label' => 'Alice A.', 'source' => 'users'], [ 'id' => 'bob', 'label' => 'Bob Y.', 'source' => 'users'], ]; $this->collaboratorSearch->expects($this->once()) ->method('search') ->willReturn([$searchResults, false]); $response = $this->controller->get('', 'files', '42', null); $list = $response->getData(); $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); } }