+
+ $mockLangNameUtils = $this->createMock( LanguageNameUtils::class );
+ $mockLangNameUtils->method( 'isValidBuiltInCode' )->will( $this->returnCallback(
+ function ( $code ) {
+ // Copy-paste, but it's only one line
+ return (bool)preg_match( '/^[a-z0-9-]{2,}$/', $code );
+ }
+ ) );
+ $mockLangNameUtils->method( 'isSupportedLanguage' )->will( $this->returnCallback(
+ function ( $code ) {
+ return in_array( $code, [
+ 'ar',
+ 'arz',
+ 'ba',
+ 'de',
+ 'en',
+ 'ksh',
+ 'ru',
+ ] );
+ }
+ ) );
+ $mockLangNameUtils->method( 'getMessagesFileName' )->will( $this->returnCallback(
+ function ( $code ) {
+ global $IP;
+ $code = str_replace( '-', '_', ucfirst( $code ) );
+ return "$IP/languages/messages/Messages$code.php";
+ }
+ ) );
+ $mockLangNameUtils->expects( $this->never() )->method( $this->anythingBut(
+ 'isValidBuiltInCode', 'isSupportedLanguage', 'getMessagesFileName'
+ ) );
+
+ $lc = $this->getMockBuilder( LocalisationCache::class )
+ ->setConstructorArgs( [
+ new ServiceOptions( LocalisationCache::CONSTRUCTOR_OPTIONS, [
+ 'forceRecache' => false,
+ 'manualRecache' => false,
+ 'ExtensionMessagesFiles' => [],
+ 'MessagesDirs' => [],
+ ] ),
+ new LCStoreDB( [] ),
+ new NullLogger,
+ [],
+ $mockLangNameUtils
+ ] )