X-Git-Url: http://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2FPrefixSearchTest.php;h=e7370566e7cacdaf463a037fe8b508f14ce7468d;hb=ca3ac3dfb89d2e801a65565dd8186ff250cde3df;hp=a33f6a6bf4167c2b15fca1f06e7b9319d47bb64b;hpb=bc2a7ba5df27660543a2948f3729d9cc2bd544c5;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/PrefixSearchTest.php b/tests/phpunit/includes/PrefixSearchTest.php index a33f6a6bf4..e7370566e7 100644 --- a/tests/phpunit/includes/PrefixSearchTest.php +++ b/tests/phpunit/includes/PrefixSearchTest.php @@ -41,6 +41,13 @@ class PrefixSearchTest extends MediaWikiLangTestCase { $this->insertPage( 'Example Foo' ); $this->insertPage( 'Example Foo/Bar' ); $this->insertPage( 'Example/Baz' ); + $this->insertPage( 'Redirect test', '#REDIRECT [[Redirect Test]]' ); + $this->insertPage( 'Redirect Test' ); + $this->insertPage( 'Redirect Test Worse Result' ); + $this->insertPage( 'Redirect test2', '#REDIRECT [[Redirect Test2]]' ); + $this->insertPage( 'Redirect TEST2', '#REDIRECT [[Redirect Test2]]' ); + $this->insertPage( 'Redirect Test2' ); + $this->insertPage( 'Redirect Test2 Worse Result' ); $this->insertPage( 'Talk:Sandbox' ); $this->insertPage( 'Talk:Example' ); @@ -63,6 +70,10 @@ class PrefixSearchTest extends MediaWikiLangTestCase { 'Example/Baz', 'Example Bar', ), + // Third result when testing offset + 'offsetresult' => array( + 'Example Foo', + ), ) ), array( array( 'Talk namespace prefix', @@ -87,6 +98,10 @@ class PrefixSearchTest extends MediaWikiLangTestCase { 'Special:AllMessages', 'Special:AllMyFiles', ), + // Third result when testing offset + 'offsetresult' => array( + 'Special:AllMyUploads', + ), ) ), array( array( 'Special namespace with prefix', @@ -96,6 +111,10 @@ class PrefixSearchTest extends MediaWikiLangTestCase { 'Special:UncategorizedCategories', 'Special:UncategorizedFiles', ), + // Third result when testing offset + 'offsetresult' => array( + 'Special:UncategorizedImages', + ), ) ), array( array( 'Special page name', @@ -138,6 +157,30 @@ class PrefixSearchTest extends MediaWikiLangTestCase { ); } + /** + * @dataProvider provideSearch + * @covers PrefixSearch::search + * @covers PrefixSearch::searchBackend + */ + public function testSearchWithOffset( Array $case ) { + $this->searchProvision( null ); + $searcher = new StringPrefixSearch; + $results = $searcher->search( $case['query'], 3, array(), 1 ); + + // We don't expect the first result when offsetting + array_shift( $case['results'] ); + // And sometimes we expect a different last result + $expected = isset( $case['offsetresult'] ) ? + array_merge( $case['results'], $case['offsetresult'] ) : + $case['results']; + + $this->assertEquals( + $expected, + $results, + $case[0] + ); + } + public static function provideSearchBackend() { return array( array( array( @@ -196,6 +239,55 @@ class PrefixSearchTest extends MediaWikiLangTestCase { 'External', ), ) ), + array( array( + "Exact match shouldn't override already found match if " . + "exact is redirect and found isn't", + 'provision' => array( + // Target of the exact match is low in the list + 'Redirect Test Worse Result', + 'Redirect Test', + ), + 'query' => 'redirect test', + 'results' => array( + // Redirect target is pulled up and exact match isn't added + 'Redirect Test', + 'Redirect Test Worse Result', + ), + ) ), + array( array( + "Exact match shouldn't override already found match if " . + "both exact match and found match are redirect", + 'provision' => array( + // Another redirect to the same target as the exact match + // is low in the list + 'Redirect Test2 Worse Result', + 'Redirect test2', + ), + 'query' => 'redirect TEST2', + 'results' => array( + // Found redirect is pulled to the top and exact match isn't + // added + 'Redirect test2', + 'Redirect Test2 Worse Result', + ), + ) ), + array( array( + "Exact match should override any already found matches that " . + "are redirects to it", + 'provision' => array( + // Another redirect to the same target as the exact match + // is low in the list + 'Redirect Test Worse Result', + 'Redirect test', + ), + 'query' => 'Redirect Test', + 'results' => array( + // Found redirect is pulled to the top and exact match isn't + // added + 'Redirect Test', + 'Redirect Test Worse Result', + ), + ) ), ); }