X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=tests%2Fphpunit%2Flanguages%2FLanguageConverterTest.php;h=5dcb8e48085e8c3438ee9f83594f256e1cfffb58;hp=8ccacfc23a58687accfdf51e029d5d2d823b94e7;hb=dfec83932fd38a9086eb5a2e212889ad00f35b0e;hpb=be74c82f9a19f9fc5a0c771ec627b9aa9746089e diff --git a/tests/phpunit/languages/LanguageConverterTest.php b/tests/phpunit/languages/LanguageConverterTest.php index 8ccacfc23a..5dcb8e4808 100644 --- a/tests/phpunit/languages/LanguageConverterTest.php +++ b/tests/phpunit/languages/LanguageConverterTest.php @@ -20,7 +20,9 @@ class LanguageConverterTest extends MediaWikiLangTestCase { $this->lang = new LanguageToTest(); $this->lc = new TestConverter( $this->lang, 'tg', - [ 'tg', 'tg-latn' ] + # Adding 'sgs' as a variant to ensure we handle deprecated codes + # adding 'simple' as a variant to ensure we handle non BCP 47 codes + [ 'tg', 'tg-latn', 'sgs', 'simple' ] ); } @@ -38,6 +40,39 @@ class LanguageConverterTest extends MediaWikiLangTestCase { $this->assertEquals( 'tg', $this->lc->getPreferredVariant() ); } + /** + * @covers LanguageConverter::getPreferredVariant + * @covers LanguageConverter::getURLVariant + */ + public function testGetPreferredVariantUrl() { + global $wgRequest; + $wgRequest->setVal( 'variant', 'tg-latn' ); + + $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); + } + + /** + * @covers LanguageConverter::getPreferredVariant + * @covers LanguageConverter::getURLVariant + */ + public function testGetPreferredVariantUrlDeprecated() { + global $wgRequest; + $wgRequest->setVal( 'variant', 'bat-smg' ); + + $this->assertEquals( 'sgs', $this->lc->getPreferredVariant() ); + } + + /** + * @covers LanguageConverter::getPreferredVariant + * @covers LanguageConverter::getURLVariant + */ + public function testGetPreferredVariantUrlBCP47() { + global $wgRequest; + $wgRequest->setVal( 'variant', 'en-simple' ); + + $this->assertEquals( 'simple', $this->lc->getPreferredVariant() ); + } + /** * @covers LanguageConverter::getPreferredVariant * @covers LanguageConverter::getHeaderVariant @@ -49,6 +84,17 @@ class LanguageConverterTest extends MediaWikiLangTestCase { $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); } + /** + * @covers LanguageConverter::getPreferredVariant + * @covers LanguageConverter::getHeaderVariant + */ + public function testGetPreferredVariantHeadersBCP47() { + global $wgRequest; + $wgRequest->setHeader( 'Accept-Language', 'en-simple' ); + + $this->assertEquals( 'simple', $this->lc->getPreferredVariant() ); + } + /** * @covers LanguageConverter::getPreferredVariant * @covers LanguageConverter::getHeaderVariant @@ -98,6 +144,38 @@ class LanguageConverterTest extends MediaWikiLangTestCase { $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); } + /** + * @covers LanguageConverter::getPreferredVariant + */ + public function testGetPreferredVariantUserOptionDeprecated() { + global $wgUser; + + $wgUser = new User; + $wgUser->load(); // from 'defaults' + $wgUser->mId = 1; + $wgUser->mDataLoaded = true; + $wgUser->mOptionsLoaded = true; + $wgUser->setOption( 'variant', 'bat-smg' ); + + $this->assertEquals( 'sgs', $this->lc->getPreferredVariant() ); + } + + /** + * @covers LanguageConverter::getPreferredVariant + */ + public function testGetPreferredVariantUserOptionBCP47() { + global $wgUser; + + $wgUser = new User; + $wgUser->load(); // from 'defaults' + $wgUser->mId = 1; + $wgUser->mDataLoaded = true; + $wgUser->mOptionsLoaded = true; + $wgUser->setOption( 'variant', 'en-simple' ); + + $this->assertEquals( 'simple', $this->lc->getPreferredVariant() ); + } + /** * @covers LanguageConverter::getPreferredVariant * @covers LanguageConverter::getUserVariant @@ -116,6 +194,42 @@ class LanguageConverterTest extends MediaWikiLangTestCase { $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); } + /** + * @covers LanguageConverter::getPreferredVariant + * @covers LanguageConverter::getUserVariant + */ + public function testGetPreferredVariantUserOptionForForeignLanguageDeprecated() { + global $wgUser; + + $this->setContentLang( 'en' ); + $wgUser = new User; + $wgUser->load(); // from 'defaults' + $wgUser->mId = 1; + $wgUser->mDataLoaded = true; + $wgUser->mOptionsLoaded = true; + $wgUser->setOption( 'variant-tg', 'bat-smg' ); + + $this->assertEquals( 'sgs', $this->lc->getPreferredVariant() ); + } + + /** + * @covers LanguageConverter::getPreferredVariant + * @covers LanguageConverter::getUserVariant + */ + public function testGetPreferredVariantUserOptionForForeignLanguageBCP47() { + global $wgUser; + + $this->setContentLang( 'en' ); + $wgUser = new User; + $wgUser->load(); // from 'defaults' + $wgUser->mId = 1; + $wgUser->mDataLoaded = true; + $wgUser->mOptionsLoaded = true; + $wgUser->setOption( 'variant-tg', 'en-simple' ); + + $this->assertEquals( 'simple', $this->lc->getPreferredVariant() ); + } + /** * @covers LanguageConverter::getPreferredVariant * @covers LanguageConverter::getUserVariant @@ -145,6 +259,26 @@ class LanguageConverterTest extends MediaWikiLangTestCase { $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() ); } + /** + * @covers LanguageConverter::getPreferredVariant + */ + public function testGetPreferredVariantDefaultLanguageVariantDeprecated() { + global $wgDefaultLanguageVariant; + + $wgDefaultLanguageVariant = 'bat-smg'; + $this->assertEquals( 'sgs', $this->lc->getPreferredVariant() ); + } + + /** + * @covers LanguageConverter::getPreferredVariant + */ + public function testGetPreferredVariantDefaultLanguageVariantBCP47() { + global $wgDefaultLanguageVariant; + + $wgDefaultLanguageVariant = 'en-simple'; + $this->assertEquals( 'simple', $this->lc->getPreferredVariant() ); + } + /** * @covers LanguageConverter::getPreferredVariant * @covers LanguageConverter::getURLVariant @@ -169,9 +303,8 @@ class LanguageConverterTest extends MediaWikiLangTestCase { $testString .= 'xxx xxx xxx'; } $testString .= "\n"; - $old = ini_set( 'pcre.backtrack_limit', 200 ); + $this->setIniSetting( 'pcre.backtrack_limit', 200 ); $result = $this->lc->autoConvert( $testString, 'tg-latn' ); - ini_set( 'pcre.backtrack_limit', $old ); // The в in the id attribute should not get converted to a v $this->assertFalse( strpos( $result, 'v' ), @@ -192,6 +325,8 @@ class TestConverter extends LanguageConverter { function loadDefaultTables() { $this->mTables = [ + 'sgs' => new ReplacementArray(), + 'simple' => new ReplacementArray(), 'tg-latn' => new ReplacementArray( $this->table ), 'tg' => new ReplacementArray() ];