X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fsearch%2FSearchEngineTest.php;h=b7bc1530307bde830e8d22dbcd3d0308d3d55cac;hb=b0b7727e5e84d4165408b90787b360f1300babd9;hp=e8077769e166e1bec25be0536f3893c42c8d9a52;hpb=29ef5f88ab95a7df05d5b48cced165bcc2f88b60;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/search/SearchEngineTest.php b/tests/phpunit/includes/search/SearchEngineTest.php index e8077769e1..b7bc153030 100644 --- a/tests/phpunit/includes/search/SearchEngineTest.php +++ b/tests/phpunit/includes/search/SearchEngineTest.php @@ -32,7 +32,11 @@ class SearchEngineTest extends MediaWikiLangTestCase { $searchType = SearchEngineFactory::getSearchEngineClass( $this->db ); $this->setMwGlobals( [ - 'wgSearchType' => $searchType + 'wgSearchType' => $searchType, + 'wgCapitalLinks' => true, + 'wgCapitalLinkOverrides' => [ + NS_CATEGORY => false // for testCompletionSearchMustRespectCapitalLinkOverrides + ] ] ); $this->search = new $searchType( $this->db ); @@ -52,7 +56,13 @@ class SearchEngineTest extends MediaWikiLangTestCase { // Reset the search type back to default - some extensions may have // overridden it. - $this->setMwGlobals( [ 'wgSearchType' => null ] ); + $this->setMwGlobals( [ + 'wgSearchType' => null, + 'wgCapitalLinks' => true, + 'wgCapitalLinkOverrides' => [ + NS_CATEGORY => false // for testCompletionSearchMustRespectCapitalLinkOverrides + ] + ] ); $this->insertPage( 'Not_Main_Page', 'This is not a main page' ); $this->insertPage( @@ -74,6 +84,9 @@ class SearchEngineTest extends MediaWikiLangTestCase { $this->insertPage( 'HalfNumbers', '1234567890' ); $this->insertPage( 'FullNumbers', '1234567890' ); $this->insertPage( 'DomainName', 'example.com' ); + $this->insertPage( 'DomainName', 'example.com' ); + $this->insertPage( 'Category:search is not Search', '' ); + $this->insertPage( 'Category:Search is not search', '' ); } protected function fetchIds( $results ) { @@ -213,6 +226,48 @@ class SearchEngineTest extends MediaWikiLangTestCase { "Title power search" ); } + public function provideCompletionSearchMustRespectCapitalLinkOverrides() { + return [ + 'Searching for "smithee" finds Smithee on NS_MAIN' => [ + 'smithee', + 'Smithee', + [ NS_MAIN ], + ], + 'Searching for "search is" will finds "search is not Search" on NS_CATEGORY' => [ + 'search is', + 'Category:search is not Search', + [ NS_CATEGORY ], + ], + 'Searching for "Search is" will finds "search is not Search" on NS_CATEGORY' => [ + 'Search is', + 'Category:Search is not search', + [ NS_CATEGORY ], + ], + ]; + } + + /** + * Test that the search query is not munged using wrong CapitalLinks setup + * (in other test that the default search backend can benefit from wgCapitalLinksOverride) + * Guard against regressions like T208255 + * @dataProvider provideCompletionSearchMustRespectCapitalLinkOverrides + * @covers SearchEngine::completionSearch + * @covers PrefixSearch::defaultSearchBackend + * @param string $search + * @param string $expectedSuggestion + * @param int[] $namespaces + */ + public function testCompletionSearchMustRespectCapitalLinkOverrides( + $search, + $expectedSuggestion, + array $namespaces + ) { + $this->search->setNamespaces( $namespaces ); + $results = $this->search->completionSearch( $search ); + $this->assertEquals( 1, $results->getSize() ); + $this->assertEquals( $expectedSuggestion, $results->getSuggestions()[0]->getText() ); + } + /** * @covers SearchEngine::getSearchIndexFields */