Merge "Move PECL memcached class to /libs"
[lhc/web/wiklou.git] / tests / phpunit / includes / api / ApiPageSetTest.php
index d2a4162..ad1deee 100644 (file)
@@ -7,22 +7,22 @@
  */
 class ApiPageSetTest extends ApiTestCase {
        public static function provideRedirectMergePolicy() {
-               return array(
-                       'By default nothing is merged' => array(
+               return [
+                       'By default nothing is merged' => [
                                null,
-                               array()
-                       ),
+                               []
+                       ],
 
-                       'A simple merge policy adds the redirect data in' => array(
+                       'A simple merge policy adds the redirect data in' => [
                                function( $current, $new ) {
                                        if ( !isset( $current['index'] ) || $new['index'] < $current['index'] ) {
                                                $current['index'] = $new['index'];
                                        }
                                        return $current;
                                },
-                               array( 'index' => 1 ),
-                       ),
-               );
+                               [ 'index' => 1 ],
+                       ],
+               ];
        }
 
        /**
@@ -31,9 +31,9 @@ class ApiPageSetTest extends ApiTestCase {
        public function testRedirectMergePolicyWithArrayResult( $mergePolicy, $expect ) {
                list( $target, $pageSet ) = $this->createPageSetWithRedirect();
                $pageSet->setRedirectMergePolicy( $mergePolicy );
-               $result = array(
-                       $target->getArticleID() => array()
-               );
+               $result = [
+                       $target->getArticleID() => []
+               ];
                $pageSet->populateGeneratorData( $result );
                $this->assertEquals( $expect, $result[$target->getArticleID()] );
        }
@@ -45,13 +45,13 @@ class ApiPageSetTest extends ApiTestCase {
                list( $target, $pageSet ) = $this->createPageSetWithRedirect();
                $pageSet->setRedirectMergePolicy( $mergePolicy );
                $result = new ApiResult( false );
-               $result->addValue( null, 'pages', array(
-                       $target->getArticleID() => array()
-               ) );
-               $pageSet->populateGeneratorData( $result, array( 'pages' ) );
+               $result->addValue( null, 'pages', [
+                       $target->getArticleID() => []
+               ] );
+               $pageSet->populateGeneratorData( $result, [ 'pages' ] );
                $this->assertEquals(
                        $expect,
-                       $result->getResultData( array( 'pages', $target->getArticleID() ) )
+                       $result->getResultData( [ 'pages', $target->getArticleID() ] )
                );
        }
 
@@ -63,16 +63,37 @@ class ApiPageSetTest extends ApiTestCase {
                self::editPage( 'UTRedirectSourceA', '#REDIRECT [[UTRedirectTarget]]' );
                self::editPage( 'UTRedirectSourceB', '#REDIRECT [[UTRedirectTarget]]' );
 
-               $request = new FauxRequest( array( 'redirects' => 1 ) );
+               $request = new FauxRequest( [ 'redirects' => 1 ] );
                $context = new RequestContext();
                $context->setRequest( $request );
                $main = new ApiMain( $context );
                $pageSet = new ApiPageSet( $main );
 
-               $pageSet->setGeneratorData( $sourceA, array( 'index' => 1 ) );
-               $pageSet->setGeneratorData( $sourceB, array( 'index' => 3 ) );
-               $pageSet->populateFromTitles( array( $sourceA, $sourceB ) );
+               $pageSet->setGeneratorData( $sourceA, [ 'index' => 1 ] );
+               $pageSet->setGeneratorData( $sourceB, [ 'index' => 3 ] );
+               $pageSet->populateFromTitles( [ $sourceA, $sourceB ] );
+
+               return [ $target, $pageSet ];
+       }
+
+       public function testHandleNormalization() {
+               $context = new RequestContext();
+               $context->setRequest( new FauxRequest( [ 'titles' => "a|B|a\xcc\x8a" ] ) );
+               $main = new ApiMain( $context );
+               $pageSet = new ApiPageSet( $main );
+               $pageSet->execute();
 
-               return array( $target, $pageSet );
+               $this->assertSame(
+                       [ 0 => [ 'A' => -1, 'B' => -2, 'Å' => -3 ] ],
+                       $pageSet->getAllTitlesByNamespace()
+               );
+               $this->assertSame(
+                       [
+                               [ 'fromencoded' => true, 'from' => 'a%CC%8A', 'to' => 'å' ],
+                               [ 'fromencoded' => false, 'from' => 'a', 'to' => 'A' ],
+                               [ 'fromencoded' => false, 'from' => 'å', 'to' => 'Å' ],
+                       ],
+                       $pageSet->getNormalizedTitlesAsResult()
+               );
        }
 }