public function testSearchFileRecollPlugin() { $query = "filename:*foo* filename:*lol* type:pdf OR type:xml AND ext:html OR ext:xml"; $searchQuery = new SearchQuery(); $searchQuery->setQueryString($this->query); $searchQuery->setQueryTokens($this->tokens); // we want to check if the SearchManager is well working, // means if it is able to load all the required library. $searchManager = new SearchManager(); $searchManager->search($searchQuery); // we also want to check if the parsing process // gives us a well formatted string. $recollPlugin = new SearchFileRecollPlugin(); $recollPlugin->search($searchQuery); $this->assertEquals($query, $recollPlugin->getSearchQuery()); // FileSearchListener::fileCreated() $this->assertFalse(is_file($this->fixture_file_path)); $this->assertTrue($this->fixture_file->createNewFile()); $this->assertTrue(is_file($this->fixture_file_path)); $searchQuery->setQueryString('testFile'); $searchQuery->setQueryTokens(null); $recollPlugin->resetSearchQuery(); $recollPlugin->search($searchQuery); $results = $recollPlugin->getResults(); $this->assertEquals($results[0]['name'], 'testFile.txt'); // FileSearchListener::fileDeleted() $this->assertTrue(is_file($this->fixture_file_path)); $this->assertTrue($this->fixture_file->delete()); $this->assertFalse(is_file($this->fixture_file_path)); $searchQuery->setQueryString('testFile'); $searchQuery->setQueryTokens(null); $recollPlugin->resetSearchQuery(); $recollPlugin->search($searchQuery); $results = $recollPlugin->getResults(); $this->assertTrue(empty($results)); // FileSearchListener::directoryCreated() $this->assertFalse(is_dir($this->fixture_dir_path)); $this->assertTrue($this->fixture_dir->mkdir()); $this->assertTrue(is_dir($this->fixture_dir_path)); $searchQuery->setQueryString('testDir'); $searchQuery->setQueryTokens(null); $recollPlugin->resetSearchQuery(); $recollPlugin->search($searchQuery); $results = $recollPlugin->getResults(); $this->assertEquals($results[0]['name'], 'testDir'); // FileSearchListener::fileMoved() $this->assertFalse(is_file($this->fixture_file_path)); $this->assertTrue($this->fixture_file->createNewFile()); $this->assertTrue(is_file($this->fixture_file_path)); $newFile = FSI::getFile('home://~fakeUser/testDir/testFile2.txt'); $this->assertTrue($this->fixture_file->moveTo($newFile)); $this->assertTrue(is_file($this->fixture_newFile_path)); $this->assertFalse(is_file($this->fixture_file_path)); $searchQuery->setQueryString('testFile2'); $searchQuery->setQueryTokens(null); $recollPlugin->resetSearchQuery(); $recollPlugin->search($searchQuery); $results = $recollPlugin->getResults(); $this->assertEquals($results[0]['name'], 'testFile2.txt'); $searchQuery->setQueryString('testFile'); $searchQuery->setQueryTokens(null); $recollPlugin->resetSearchQuery(); $recollPlugin->search($searchQuery); $results = $recollPlugin->getResults(); $this->assertNotEquals($results[0]['name'], 'testFile.txt'); $newFile->delete(); // FileSearchListener::fileRenamed() $this->assertFalse(is_file($this->fixture_file_path)); $this->assertTrue($this->fixture_file->createNewFile()); $this->assertTrue(is_file($this->fixture_file_path)); $this->assertTrue($this->fixture_file->renameTo('testFileRenamed.txt')); $searchQuery->setQueryString('testFile'); $searchQuery->setQueryTokens(null); $recollPlugin->resetSearchQuery(); $recollPlugin->search($searchQuery); $results = $recollPlugin->getResults(); $this->assertNotEquals($results[0]['name'], 'testFile.txt'); $this->assertEquals($results[0]['name'], 'testFileRenamed.txt'); // FileSearchListener::fileWritten() $this->fixture_file->putContents('take it easy!'); // TODO: check if the content's file is up to date. }
public function checkTokens(SearchQuery $obj) { // first, we need to retrive all the available tokens. $availableTokens = $this->getAvailableTokens(); // once we did that, we can analyze each token we've received in // queryTokens, and try to find if it matches one of the availables // token's module we have. $queryTokens = $obj->getQueryTokens(); if ($queryTokens) { foreach ($queryTokens as $token => $parameters) { if (array_key_exists($token, $availableTokens)) { $tokenObj = new $availableTokens[$token]($queryTokens[$token]); $tokenObj->checkToken($parameters); if (!$tokenObj->getIsValid()) { unset($queryTokens[$token]); } } else { unset($queryTokens[$token]); } } $obj->setQueryTokens($queryTokens); } }