2019-08-22 15:39:26 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
use MediaWiki\Languages\LanguageFallback;
|
|
|
|
|
use MediaWiki\Languages\LanguageNameUtils;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @coversDefaultClass MediaWiki\Languages\LanguageFallback
|
|
|
|
|
* @covers ::__construct
|
|
|
|
|
*/
|
|
|
|
|
class LanguageFallbackTest extends MediaWikiUnitTestCase {
|
|
|
|
|
use LanguageFallbackTestTrait;
|
|
|
|
|
|
2020-05-09 23:32:25 +00:00
|
|
|
private const DATA = [
|
2019-08-22 15:39:26 +00:00
|
|
|
'en' => [],
|
|
|
|
|
'fr' => [],
|
|
|
|
|
'sco' => [ 'en' ],
|
|
|
|
|
'yi' => [ 'he' ],
|
|
|
|
|
'ruq' => [ 'ruq-latn', 'ro' ],
|
2021-10-05 21:55:15 +00:00
|
|
|
'sh' => [ 'sh-latn', 'sh-cyrl', 'bs', 'sr-el', 'sr-latn', 'hr' ],
|
2019-08-22 15:39:26 +00:00
|
|
|
];
|
|
|
|
|
|
|
|
|
|
private function getLanguageNameUtils() {
|
2022-07-18 08:39:00 +00:00
|
|
|
$mockLangNameUtils = $this->createNoOpMock( LanguageNameUtils::class,
|
|
|
|
|
[ 'isValidBuiltInCode' ] );
|
2019-08-22 15:39:26 +00:00
|
|
|
$mockLangNameUtils->method( 'isValidBuiltInCode' )
|
2022-06-05 23:39:02 +00:00
|
|
|
->willReturnCallback( static function ( $code ) {
|
2019-08-22 15:39:26 +00:00
|
|
|
// One-line copy-paste
|
|
|
|
|
return (bool)preg_match( '/^[a-z0-9-]{2,}$/', $code );
|
2022-06-05 23:39:02 +00:00
|
|
|
} );
|
2019-08-22 15:39:26 +00:00
|
|
|
return $mockLangNameUtils;
|
|
|
|
|
}
|
|
|
|
|
|
2021-07-22 03:11:47 +00:00
|
|
|
private function getCallee( array $options = [] ): LanguageFallback {
|
2019-08-22 15:39:26 +00:00
|
|
|
return new LanguageFallback(
|
|
|
|
|
$options['siteLangCode'] ?? 'en',
|
|
|
|
|
$this->getMockLocalisationCache(
|
|
|
|
|
$options['expectedGets'] ?? 1,
|
|
|
|
|
$options['fallbackMap'] ?? self::DATA
|
|
|
|
|
),
|
|
|
|
|
$this->getLanguageNameUtils()
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function getMessagesKey() {
|
|
|
|
|
return LanguageFallback::MESSAGES;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function getStrictKey() {
|
|
|
|
|
return LanguageFallback::STRICT;
|
|
|
|
|
}
|
|
|
|
|
}
|