Merge "SpecialFewestrevisions: Allow pages with only 1 revision to be shown"
[lhc/web/wiklou.git] / tests / phpunit / includes / cache / MessageCacheTest.php
index 803acf7..bd744c0 100644 (file)
@@ -19,17 +19,11 @@ class MessageCacheTest extends MediaWikiLangTestCase {
        protected function configureLanguages() {
                // for the test, we need the content language to be anything but English,
                // let's choose e.g. German (de)
-               $langCode = 'de';
-               $langObj = Language::factory( $langCode );
-
-               $this->setMwGlobals( array(
-                       'wgLanguageCode' => $langCode,
-                       'wgLang' => $langObj,
-                       'wgContLang' => $langObj,
-               ) );
+               $this->setUserLang( 'de' );
+               $this->setContentLang( 'de' );
        }
 
-       function addDBData() {
+       function addDBDataOnce() {
                $this->configureLanguages();
 
                // Set up messages and fallbacks ab -> ru -> de
@@ -52,24 +46,23 @@ class MessageCacheTest extends MediaWikiLangTestCase {
                $this->makePage( 'MessageCacheTest-FullKeyTest', 'ru' );
 
                // In content language -- get base if no derivative
-               $this->makePage( 'FallbackLanguageTest-NoDervContLang', 'de', 'de/none', false );
+               $this->makePage( 'FallbackLanguageTest-NoDervContLang', 'de', 'de/none' );
        }
 
        /**
         * Helper function for addDBData -- adds a simple page to the database
         *
         * @param string $title Title of page to be created
-        * @param string $lang  Language and content of the created page
+        * @param string $lang Language and content of the created page
         * @param string|null $content Content of the created page, or null for a generic string
-        * @param bool $createSubPage Set to false if a root page should be created
         */
-       protected function makePage( $title, $lang, $content = null, $createSubPage = true ) {
+       protected function makePage( $title, $lang, $content = null ) {
                global $wgContLang;
 
                if ( $content === null ) {
                        $content = $lang;
                }
-               if ( $lang !== $wgContLang->getCode() || $createSubPage ) {
+               if ( $lang !== $wgContLang->getCode() ) {
                        $title = "$title/$lang";
                }
 
@@ -90,20 +83,20 @@ class MessageCacheTest extends MediaWikiLangTestCase {
        }
 
        function provideMessagesForFallback() {
-               return array(
-                       array( 'FallbackLanguageTest-Full', 'ab', 'ab' ),
-                       array( 'FallbackLanguageTest-Partial', 'ab', 'ru' ),
-                       array( 'FallbackLanguageTest-ContLang', 'ab', 'de' ),
-                       array( 'FallbackLanguageTest-None', 'ab', false ),
+               return [
+                       [ 'FallbackLanguageTest-Full', 'ab', 'ab' ],
+                       [ 'FallbackLanguageTest-Partial', 'ab', 'ru' ],
+                       [ 'FallbackLanguageTest-ContLang', 'ab', 'de' ],
+                       [ 'FallbackLanguageTest-None', 'ab', false ],
 
                        // Existing message with customizations on the fallbacks
-                       array( 'sunday', 'ab', 'амҽыш' ),
+                       [ 'sunday', 'ab', 'амҽыш' ],
 
                        // bug 46579
-                       array( 'FallbackLanguageTest-NoDervContLang', 'de', 'de/none' ),
+                       [ 'FallbackLanguageTest-NoDervContLang', 'de', 'de/none' ],
                        // UI language different from content language should only use de/none as last option
-                       array( 'FallbackLanguageTest-NoDervContLang', 'fit', 'de/none' ),
-               );
+                       [ 'FallbackLanguageTest-NoDervContLang', 'fit', 'de/none' ],
+               ];
        }
 
        /**
@@ -118,11 +111,33 @@ class MessageCacheTest extends MediaWikiLangTestCase {
        }
 
        function provideMessagesForFullKeys() {
-               return array(
-                       array( 'MessageCacheTest-FullKeyTest/ru', 'ru', 'ru' ),
-                       array( 'MessageCacheTest-FullKeyTest/ru', 'ab', 'ru' ),
-                       array( 'MessageCacheTest-FullKeyTest/ru/foo', 'ru', false ),
-               );
+               return [
+                       [ 'MessageCacheTest-FullKeyTest/ru', 'ru', 'ru' ],
+                       [ 'MessageCacheTest-FullKeyTest/ru', 'ab', 'ru' ],
+                       [ 'MessageCacheTest-FullKeyTest/ru/foo', 'ru', false ],
+               ];
        }
 
+       /**
+        * @dataProvider provideNormalizeKey
+        */
+       public function testNormalizeKey( $key, $expected ) {
+               $actual = MessageCache::normalizeKey( $key );
+               $this->assertEquals( $expected, $actual );
+       }
+
+       public function provideNormalizeKey() {
+               return [
+                       [ 'Foo', 'foo' ],
+                       [ 'foo', 'foo' ],
+                       [ 'fOo', 'fOo' ],
+                       [ 'FOO', 'fOO' ],
+                       [ 'Foo bar', 'foo_bar' ],
+                       [ 'Ćab', 'ćab' ],
+                       [ 'Ćab_e 3', 'ćab_e_3' ],
+                       [ 'ĆAB', 'ćAB' ],
+                       [ 'ćab', 'ćab' ],
+                       [ 'ćaB', 'ćaB' ],
+               ];
+       }
 }