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
50 lines
1.4 KiB
PHP
50 lines
1.4 KiB
PHP
<?php
|
|
|
|
use MediaWiki\Languages\LanguageConverterFactory;
|
|
use MediaWiki\MediaWikiServices;
|
|
|
|
/**
|
|
* @group Language
|
|
*/
|
|
class LanguageConverterIntegrationTest extends MediaWikiIntegrationTestCase {
|
|
|
|
/** @var LanguageConverterFactory */
|
|
private $factory;
|
|
|
|
protected function setUp(): void {
|
|
parent::setUp();
|
|
$this->factory = new LanguageConverterFactory(
|
|
MediaWikiServices::getInstance()->getObjectFactory(),
|
|
false,
|
|
false,
|
|
false,
|
|
static function () {
|
|
return MediaWikiServices::getInstance()->getContentLanguage();
|
|
}
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Shorthand for getting a Language Converter for specific language's code
|
|
* @param string $code code of converter
|
|
* @return ILanguageConverter
|
|
*/
|
|
private function getLanguageConverter( $code ): ILanguageConverter {
|
|
$language = MediaWikiServices::getInstance()->getLanguageFactory()
|
|
->getLanguage( $code );
|
|
return $this->factory->getLanguageConverter( $language );
|
|
}
|
|
|
|
/**
|
|
* @covers LanguageConverter::hasVariant
|
|
*/
|
|
public function testHasVariant() {
|
|
// See LanguageSrTest::testHasVariant() for additional tests
|
|
$converterEn = $this->getLanguageConverter( 'en' );
|
|
$this->assertTrue( $converterEn->hasVariant( 'en' ), 'base is always a variant' );
|
|
$this->assertFalse( $converterEn->hasVariant( 'en-bogus' ), 'bogus en variant' );
|
|
|
|
$converterBogus = $this->getLanguageConverter( 'bogus' );
|
|
$this->assertTrue( $converterBogus->hasVariant( 'bogus' ), 'base is always a variant' );
|
|
}
|
|
}
|