summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Brahmer <info@b-brahmer.de>2023-01-26 14:21:55 +0100
committerBenjamin Brahmer <info@b-brahmer.de>2023-01-29 20:26:43 +0100
commitbbf4d56ede062f62100871483e23ec09b928cf25 (patch)
treed4648e991fa6345098e7eb7eb805d71bb3633fe9
parente9b616f88983b49601241cd379832e4d95657d8f (diff)
add new test for item searchfeature/articlesearch
Signed-off-by: Benjamin Brahmer <info@b-brahmer.de>
-rw-r--r--tests/Unit/Search/ItemSearchProviderTest.php147
1 files changed, 147 insertions, 0 deletions
diff --git a/tests/Unit/Search/ItemSearchProviderTest.php b/tests/Unit/Search/ItemSearchProviderTest.php
new file mode 100644
index 000000000..062d52a77
--- /dev/null
+++ b/tests/Unit/Search/ItemSearchProviderTest.php
@@ -0,0 +1,147 @@
+<?php
+
+namespace OCA\News\Search;
+
+use OCA\News\Db\Item;
+use OCA\News\Db\ListType;
+use OCA\News\Service\ItemServiceV2;
+use OCP\IL10N;
+use OCP\IURLGenerator;
+use OCP\IUser;
+use OCP\Search\ISearchQuery;
+use PHPUnit\Framework\MockObject\MockObject;
+use PHPUnit\Framework\TestCase;
+
+class ItemSearchProviderTest extends TestCase
+{
+
+ /**
+ * @var MockObject|ItemServiceV2
+ */
+ private $itemService;
+
+ /**
+ * @var MockObject|IL10N
+ */
+ private $l10n;
+
+ /**
+ * @var MockObject|IURLGenerator
+ */
+ private $generator;
+
+ /**
+ * @var ItemSearchProvider
+ */
+ private $class;
+
+ protected function setUp(): void
+ {
+ $this->l10n = $this->getMockBuilder(IL10N::class)
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->generator = $this->getMockBuilder(IURLGenerator::class)
+ ->disableOriginalConstructor()
+ ->getMock();
+ $this->itemService = $this->getMockBuilder(ItemServiceV2::class)
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $this->class = new ItemSearchProvider(
+ $this->l10n,
+ $this->generator,
+ $this->itemService
+ );
+ }
+
+ public function testGetId()
+ {
+ $this->assertSame('news_item', $this->class->getId());
+ }
+
+ public function testGetName()
+ {
+ $this->l10n->expects($this->once())
+ ->method('t')
+ ->with('News articles')
+ ->willReturnArgument(0);
+
+ $this->assertSame('News articles', $this->class->getName());
+ }
+
+ public function testGetOrderExternal()
+ {
+ $this->assertSame(65, $this->class->getOrder('contacts.Page.index', []));
+ }
+
+ public function testGetOrderInternal()
+ {
+ $this->assertSame(1, $this->class->getOrder('news.page.index', []));
+ }
+
+ public function testSearch()
+ {
+ $user = $this->getMockBuilder(IUser::class)
+ ->getMock();
+ $query = $this->getMockBuilder(ISearchQuery::class)
+ ->getMock();
+
+ $query->expects($this->once())
+ ->method('getCursor')
+ ->willReturn(null);
+
+ $query->expects($this->once())
+ ->method('getLimit')
+ ->willReturn(10);
+
+ $user->expects($this->once())
+ ->method('getUID')
+ ->willReturn('user');
+
+ $query->expects($this->once())
+ ->method('getTerm')
+ ->willReturn('some text');
+
+
+ $items = [
+ Item::fromRow(['id' => 1,'title' => 'some_tErm', 'body' => 'some text', 'feedId' => 1]),
+ Item::fromRow(['id' => 2,'title' => 'nothing', 'body' => 'some text', 'feedId' => 1])
+ ];
+
+ $this->itemService->expects($this->once())
+ ->method('findAllWithFilters')
+ ->with(
+ 'user',
+ ListType::ALL_ITEMS,
+ 10,
+ 0,
+ false,
+ ['some text'])
+ ->willReturn($items);
+
+
+ $this->l10n->expects($this->once())
+ ->method('t')
+ ->with('News')
+ ->willReturnArgument(0);
+
+ $this->generator->expects($this->once())
+ ->method('imagePath')
+ ->with('core', 'filetypes/text.svg')
+ ->willReturn('folderpath.svg');
+
+ $this->generator->expects($this->exactly(2))
+ ->method('linkToRoute')
+ ->with('news.page.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('some text', $entry['subline']);
+ $this->assertSame('/news#/items/feeds/1', $entry['resourceUrl']);
+ }
+}