X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Fapi%2FApiPageSetTest.php;h=10bdfa735cb8b83efc13354f5bf39591430c6038;hb=005857aba57362d415b9436f2341f5456b6a3567;hp=ad1deee5ce747f6b172aad4fd4f7a4f82f1f9863;hpb=ce079cf6ad79ca8d3360817f809b219d166f9153;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/api/ApiPageSetTest.php b/tests/phpunit/includes/api/ApiPageSetTest.php index ad1deee5ce..10bdfa735c 100644 --- a/tests/phpunit/includes/api/ApiPageSetTest.php +++ b/tests/phpunit/includes/api/ApiPageSetTest.php @@ -4,6 +4,7 @@ * @group API * @group medium * @group Database + * @covers ApiPageSet */ class ApiPageSetTest extends ApiTestCase { public static function provideRedirectMergePolicy() { @@ -14,7 +15,7 @@ class ApiPageSetTest extends ApiTestCase { ], 'A simple merge policy adds the redirect data in' => [ - function( $current, $new ) { + function ( $current, $new ) { if ( !isset( $current['index'] ) || $new['index'] < $current['index'] ) { $current['index'] = $new['index']; } @@ -96,4 +97,83 @@ class ApiPageSetTest extends ApiTestCase { $pageSet->getNormalizedTitlesAsResult() ); } + + public function testSpecialRedirects() { + $id1 = self::editPage( 'UTApiPageSet', 'UTApiPageSet in the default language' ) + ->value['revision']->getTitle()->getArticleID(); + $id2 = self::editPage( 'UTApiPageSet/de', 'UTApiPageSet in German' ) + ->value['revision']->getTitle()->getArticleID(); + + $user = $this->getTestUser()->getUser(); + $userName = $user->getName(); + $userDbkey = str_replace( ' ', '_', $userName ); + $request = new FauxRequest( [ + 'titles' => join( '|', [ + 'Special:MyContributions', + 'Special:MyPage', + 'Special:MyTalk/subpage', + 'Special:MyLanguage/UTApiPageSet', + ] ), + ] ); + $context = new RequestContext(); + $context->setRequest( $request ); + $context->setUser( $user ); + + $main = new ApiMain( $context ); + $pageSet = new ApiPageSet( $main ); + $pageSet->execute(); + + $this->assertEquals( [ + ], $pageSet->getRedirectTitlesAsResult() ); + $this->assertEquals( [ + [ 'ns' => -1, 'title' => 'Special:MyContributions', 'special' => true ], + [ 'ns' => -1, 'title' => 'Special:MyPage', 'special' => true ], + [ 'ns' => -1, 'title' => 'Special:MyTalk/subpage', 'special' => true ], + [ 'ns' => -1, 'title' => 'Special:MyLanguage/UTApiPageSet', 'special' => true ], + ], $pageSet->getInvalidTitlesAndRevisions() ); + $this->assertEquals( [ + ], $pageSet->getAllTitlesByNamespace() ); + + $request->setVal( 'redirects', 1 ); + $main = new ApiMain( $context ); + $pageSet = new ApiPageSet( $main ); + $pageSet->execute(); + + $this->assertEquals( [ + [ 'from' => 'Special:MyPage', 'to' => "User:$userName" ], + [ 'from' => 'Special:MyTalk/subpage', 'to' => "User talk:$userName/subpage" ], + [ 'from' => 'Special:MyLanguage/UTApiPageSet', 'to' => 'UTApiPageSet' ], + ], $pageSet->getRedirectTitlesAsResult() ); + $this->assertEquals( [ + [ 'ns' => -1, 'title' => 'Special:MyContributions', 'special' => true ], + [ 'ns' => 2, 'title' => "User:$userName", 'missing' => true ], + [ 'ns' => 3, 'title' => "User talk:$userName/subpage", 'missing' => true ], + ], $pageSet->getInvalidTitlesAndRevisions() ); + $this->assertEquals( [ + 0 => [ 'UTApiPageSet' => $id1 ], + 2 => [ $userDbkey => -2 ], + 3 => [ "$userDbkey/subpage" => -3 ], + ], $pageSet->getAllTitlesByNamespace() ); + + $context->setLanguage( 'de' ); + $main = new ApiMain( $context ); + $pageSet = new ApiPageSet( $main ); + $pageSet->execute(); + + $this->assertEquals( [ + [ 'from' => 'Special:MyPage', 'to' => "User:$userName" ], + [ 'from' => 'Special:MyTalk/subpage', 'to' => "User talk:$userName/subpage" ], + [ 'from' => 'Special:MyLanguage/UTApiPageSet', 'to' => 'UTApiPageSet/de' ], + ], $pageSet->getRedirectTitlesAsResult() ); + $this->assertEquals( [ + [ 'ns' => -1, 'title' => 'Special:MyContributions', 'special' => true ], + [ 'ns' => 2, 'title' => "User:$userName", 'missing' => true ], + [ 'ns' => 3, 'title' => "User talk:$userName/subpage", 'missing' => true ], + ], $pageSet->getInvalidTitlesAndRevisions() ); + $this->assertEquals( [ + 0 => [ 'UTApiPageSet/de' => $id2 ], + 2 => [ $userDbkey => -2 ], + 3 => [ "$userDbkey/subpage" => -3 ], + ], $pageSet->getAllTitlesByNamespace() ); + } }