18 import(
'lib.pkp.tests.PKPTestCase');
19 import(
'classes.submission.Submission');
20 import(
'lib.pkp.classes.core.ArrayItemIterator');
21 import(
'lib.pkp.classes.services.PKPSchemaService');
32 $mockedDaos = parent::getMockedDAOs();
34 'ArticleSearchDAO',
'JournalDAO',
43 protected function setUp() : void {
65 HookRegistry::register(
'ArticleSearchIndex::submissionFileChanged', array($this,
'callbackUpdateFileIndex'));
69 $articleSearchIndex->submissionFileChanged(0, 1, 2);
73 $lastHook = array_pop($calledHooks);
74 self::assertEquals(
'ArticleSearchIndex::submissionFileChanged', $lastHook[0]);
85 $this->registerMockArticleSearchDAO($this->never(), $this->atLeastOnce());
92 $articleSearchIndex->submissionFileDeleted(0);
100 HookRegistry::register(
'ArticleSearchIndex::submissionFileDeleted', array($this,
'callbackDeleteTextIndex'));
103 $this->registerMockArticleSearchDAO($this->never(), $this->never());
107 $articleSearchIndex->submissionFileDeleted(0, 1, 2);
111 $lastHook = array_pop($calledHooks);
112 self::assertEquals(
'ArticleSearchIndex::submissionFileDeleted', $lastHook[0]);
123 $this->registerMockArticleSearchDAO($this->atLeastOnce(), $this->never());
124 $this->registerMockJournalDAO();
130 $this->expectOutputString(
"##search.cli.rebuildIndex.clearingIndex## ... ##search.cli.rebuildIndex.done##\n");
134 $articleSearchIndex->rebuildIndex(
true);
145 $this->expectOutputString(
"Some log message from the plug-in.");
149 $articleSearchIndex->rebuildIndex(
true);
150 $articleSearchIndex->rebuildIndex(
false);
160 $this->markTestSkipped();
167 $article = $this->getMockBuilder(Article::class)
168 ->setMethods(array(
'getAuthors'))
170 $article->expects($this->any())
171 ->method(
'getAuthors')
172 ->will($this->returnValue(array()));
175 $articleSearchIndex = $this->getMockArticleSearchIndex($this->atLeastOnce());
176 $articleSearchIndex->submissionMetadataChanged($article);
184 HookRegistry::register(
'ArticleSearchIndex::articleMetadataChanged', array($this,
'callbackIndexArticleMetadata'));
188 $articleSearchIndex = $this->getMockArticleSearchIndex($this->never());
189 $articleSearchIndex->submissionMetadataChanged($article);
193 self::assertEquals(
'ArticleSearchIndex::articleMetadataChanged', $calledHooks[0][0]);
203 $this->markTestSkipped();
207 $this->registerFileDAOs(
true);
212 $articleSearchIndex->submissionFilesChanged($article);
220 HookRegistry::register(
'ArticleSearchIndex::submissionFilesChanged', array($this,
'callbackIndexSubmissionFiles'));
223 $this->registerFileDAOs(
false);
228 $articleSearchIndex->submissionFilesChanged($article);
232 $lastHook = array_pop($calledHooks);
233 self::assertEquals(
'ArticleSearchIndex::submissionFilesChanged', $lastHook[0]);
249 self::assertEquals(
'ArticleSearchIndex::submissionFileChanged', $hook);
251 list($articleId, $type, $fileId) = $params;
252 self::assertEquals(0, $articleId);
253 self::assertEquals(1, $type);
254 self::assertEquals(2, $fileId);
267 self::assertEquals(
'ArticleSearchIndex::submissionFileDeleted', $hook);
269 list($articleId, $type, $assocId) = $params;
270 self::assertEquals(0, $articleId);
271 self::assertEquals(1, $type);
272 self::assertEquals(2, $assocId);
284 self::assertEquals(
'ArticleSearchIndex::rebuildIndex', $hook);
286 list($log) = $params;
287 if ($log) echo
"Some log message from the plug-in.";
300 self::assertEquals(
'ArticleSearchIndex::articleMetadataChanged', $hook);
302 list($article) = $params;
303 self::assertInstanceOf(
'Submission', $article);
316 self::assertEquals(
'ArticleSearchIndex::submissionFilesChanged', $hook);
318 list($article) = $params;
319 self::assertInstanceOf(
'Submission', $article);
334 private function registerMockArticleSearchDAO($clearIndexExpected, $deleteArticleExpected) {
336 $articleSearchDao = $this->getMockBuilder(ArticleSearchDAO::class)
337 ->setMethods(array(
'clearIndex',
'deleteSubmissionKeywords'))
341 $articleSearchDao->expects($clearIndexExpected)
342 ->method(
'clearIndex')
343 ->will($this->returnValue(
null));
346 $articleSearchDao->expects($deleteArticleExpected)
347 ->method(
'deleteSubmissionKeywords')
348 ->will($this->returnValue(
null));
358 private function registerMockJournalDAO() {
360 $journalDao = $this->getMockBuilder(JournalDAO::class)
361 ->setMethods(array(
'getAll'))
369 $journalDao->expects($this->
any())
371 ->will($this->returnValue($journalsIterator));
381 private function registerFileDAOs($expectMethodCall) {
383 $articleGalleyDao = $this->getMockBuilder(ArticleGalleyDAO::class)
384 ->setMethods(array(
'getBySubmissionId'))
388 if ($expectMethodCall) {
389 $expectation = $this->atLeastOnce();
391 $expectation = $this->never();
393 $articleGalleyDao->expects($expectation)
394 ->method(
'getBySubmissionId')
395 ->will($this->returnValue(array()));
404 private function getMockArticleSearchIndex($expectedCall) {
407 $articleSearchIndex = $this->getMockBuilder(ArticleSearchIndex::class)
408 ->setMethods(array(
'_updateTextIndex'))
412 $articleSearchIndex->expects($expectedCall)
413 ->method(
'_updateTextIndex')
414 ->will($this->returnValue(
null));
415 return $articleSearchIndex;