diff options
author | Sean Molenaar <sean@seanmolenaar.eu> | 2021-04-10 10:52:34 +0200 |
---|---|---|
committer | Benjamin Brahmer <info@b-brahmer.de> | 2021-04-10 14:55:33 +0200 |
commit | d5c2a8bb093f21bd5e7b075115b16d9aa9059a25 (patch) | |
tree | 280d0f2fe51efe6c1efc547895fc64544dcce78a /tests | |
parent | 6f3f9308178660e883dfde4b4a51ae816d5d8bbb (diff) |
Search: Fix and test folder search
Signed-off-by: Sean Molenaar <sean@seanmolenaar.eu>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Unit/Search/FolderSearchProviderTest.php | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/tests/Unit/Search/FolderSearchProviderTest.php b/tests/Unit/Search/FolderSearchProviderTest.php new file mode 100644 index 000000000..b7aff7587 --- /dev/null +++ b/tests/Unit/Search/FolderSearchProviderTest.php @@ -0,0 +1,132 @@ +<?php + +namespace OCA\News\Search; + +use OCA\News\Db\Folder; +use OCA\News\Service\FeedServiceV2; +use OCA\News\Service\FolderServiceV2; +use OCA\News\Service\OpmlService; +use OCA\News\Utility\OPMLExporter; +use OCP\IL10N; +use OCP\IURLGenerator; +use OCP\IUser; +use OCP\Search\ISearchQuery; +use PHPUnit\Framework\TestCase; + +class FolderSearchProviderTest extends TestCase +{ + + /** + * @var \PHPUnit\Framework\MockObject\MockObject|FolderServiceV2 + */ + private $folderService; + + /** + * @var \PHPUnit\Framework\MockObject\MockObject|IL10N + */ + private $l10n; + + /** + * @var \PHPUnit\Framework\MockObject\MockObject|IURLGenerator + */ + private $generator; + + /** + * @var FolderSearchProvider + */ + private $class; + + protected function setUp(): void + { + $this->l10n = $this->getMockBuilder(IL10N::class) + ->disableOriginalConstructor() + ->getMock(); + $this->generator = $this->getMockBuilder(IURLGenerator::class) + ->disableOriginalConstructor() + ->getMock(); + $this->folderService = $this->getMockBuilder(FolderServiceV2::class) + ->disableOriginalConstructor() + ->getMock(); + + $this->class = new FolderSearchProvider( + $this->l10n, + $this->generator, + $this->folderService + ); + } + + public function testGetId() + { + $this->assertSame('news_folder', $this->class->getId()); + } + + public function testGetName() + { + $this->l10n->expects($this->once()) + ->method('t') + ->with('News folders') + ->willReturnArgument(0); + + $this->assertSame('News folders', $this->class->getName()); + } + + public function testGetOrderExternal() + { + $this->assertSame(55, $this->class->getOrder('contacts.Page.index', [])); + } + + public function testGetOrderInternal() + { + $this->assertSame(-1, $this->class->getOrder('news.view.index', [])); + } + + public function testSearch() + { + $user = $this->getMockBuilder(IUser::class) + ->getMock(); + $query = $this->getMockBuilder(ISearchQuery::class) + ->getMock(); + + $user->expects($this->once()) + ->method('getUID') + ->willReturn('user'); + + $query->expects($this->once()) + ->method('getTerm') + ->willReturn('Term'); + + $folders = [ + Folder::fromRow(['id' => 1,'name' => 'some_tErm']), + Folder::fromRow(['id' => 2,'name' => 'nothing']) + ]; + + $this->folderService->expects($this->once()) + ->method('findAllForUser') + ->with('user') + ->willReturn($folders); + + $this->l10n->expects($this->once()) + ->method('t') + ->with('News') + ->willReturnArgument(0); + + $this->generator->expects($this->once()) + ->method('imagePath') + ->with('core', 'filetypes/folder.svg') + ->willReturn('folderpath.svg'); + + $this->generator->expects($this->once()) + ->method('linkToRoute') + ->with('news.view.index') + ->willReturn('/news'); + + + $result = $this->class->search($user, $query)->jsonSerialize(); + $entry = $result['entries'][0]->jsonSerialize(); + $this->assertSame('News', $result['name']); + $this->assertSame('some_tErm', $entry['title']); + $this->assertSame('folderpath.svg', $entry['thumbnailUrl']); + $this->assertSame('', $entry['subline']); + $this->assertSame('/news#/items/folders/1', $entry['resourceUrl']); + } +} |