wiki.techinc.nl/tests/phpunit/languages/LanguageConverterTestTrait.php
Umherirrender a9bc9f8a04 Use ObjectFactory in LanguageConverterFactory
Use the object factory to inject service into TrivialLanguageConverter
class.
The other language converter classes does not use service directly.
The classes are using indirectly services in some function of
the parent class, which needs injection as well (tracked with T294185).

Needs fallback to global state in TrivialLanguageConverter, because the
class is used in extensions integration tests

Change-Id: If72d054d062a4f357e12c5b168e118bfafffd626
2022-02-24 17:47:09 +01:00

39 lines
881 B
PHP

<?php
use MediaWiki\Languages\LanguageConverterFactory;
use MediaWiki\MediaWikiServices;
trait LanguageConverterTestTrait {
private $codeRegex = '/^(.+)ConverterTest$/';
protected function code(): string {
if ( preg_match( $this->codeRegex, get_class( $this ), $m ) ) {
return mb_strtolower( $m[1] );
}
return 'en';
}
/** Create and return LanguageConveter to be tested.
*
* @return ILanguageConverter
*/
protected function getLanguageConverter(): ILanguageConverter {
$code = $this->code();
$language = MediaWikiServices::getInstance()->getLanguageFactory()
->getLanguage( $code );
$factory = new LanguageConverterFactory(
MediaWikiServices::getInstance()->getObjectFactory(),
false,
false,
false,
static function () use ( $language ) {
return $language;
}
);
return $factory->getLanguageConverter( $language );
}
}