mirror of
https://gerrit.wikimedia.org/r/mediawiki/skins/MinervaNeue
synced 2024-09-23 10:19:05 +00:00
Inject service LanguageConverterFactory in LanguagesHelper
Change-Id: I2fd1b4c3b25a94cca59d08216390652759859a62
This commit is contained in:
parent
751da83410
commit
52583a336d
|
@ -19,7 +19,7 @@
|
|||
*/
|
||||
namespace MediaWiki\Minerva;
|
||||
|
||||
use MediaWiki\MediaWikiServices;
|
||||
use MediaWiki\Languages\LanguageConverterFactory;
|
||||
use MediaWiki\Output\OutputPage;
|
||||
use MediaWiki\Title\Title;
|
||||
|
||||
|
@ -29,15 +29,22 @@ use MediaWiki\Title\Title;
|
|||
*/
|
||||
class LanguagesHelper {
|
||||
|
||||
private LanguageConverterFactory $languageConverterFactory;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
private $hasLanguages;
|
||||
|
||||
/**
|
||||
* @param LanguageConverterFactory $languageConverterFactory
|
||||
* @param OutputPage $out Output page to fetch language links
|
||||
*/
|
||||
public function __construct( OutputPage $out ) {
|
||||
public function __construct(
|
||||
LanguageConverterFactory $languageConverterFactory,
|
||||
OutputPage $out
|
||||
) {
|
||||
$this->languageConverterFactory = $languageConverterFactory;
|
||||
$this->hasLanguages = $out->getLanguageLinks() !== [];
|
||||
}
|
||||
|
||||
|
@ -50,8 +57,7 @@ class LanguagesHelper {
|
|||
if ( $this->hasLanguages ) {
|
||||
return true;
|
||||
}
|
||||
$langConv = MediaWikiServices::getInstance()->getLanguageConverterFactory()
|
||||
->getLanguageConverter( $title->getPageLanguage() );
|
||||
$langConv = $this->languageConverterFactory->getLanguageConverter( $title->getPageLanguage() );
|
||||
return $langConv->hasVariants();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -151,8 +151,11 @@ return [
|
|||
RequestContext::getMain()
|
||||
);
|
||||
},
|
||||
'Minerva.LanguagesHelper' => static function (): LanguagesHelper {
|
||||
return new LanguagesHelper( RequestContext::getMain()->getOutput() );
|
||||
'Minerva.LanguagesHelper' => static function ( MediaWikiServices $services ): LanguagesHelper {
|
||||
return new LanguagesHelper(
|
||||
$services->getLanguageConverterFactory(),
|
||||
RequestContext::getMain()->getOutput()
|
||||
);
|
||||
},
|
||||
'Minerva.SkinOptions' => static function (): SkinOptions {
|
||||
return new SkinOptions();
|
||||
|
|
|
@ -31,17 +31,24 @@ class LanguagesHelperTest extends MediaWikiIntegrationTestCase {
|
|||
}
|
||||
|
||||
/**
|
||||
* Build test Title object
|
||||
* Build test LanguageConverterFactory object
|
||||
* @param bool $hasVariants
|
||||
* @return Title
|
||||
* @return LanguageConverterFactory
|
||||
*/
|
||||
private function getTitle( $hasVariants ) {
|
||||
private function getLanguageConverterFactory( $hasVariants ) {
|
||||
$langConv = $this->createMock( ILanguageConverter::class );
|
||||
$langConv->method( 'hasVariants' )->willReturn( $hasVariants );
|
||||
$langConvFactory = $this->createMock( LanguageConverterFactory::class );
|
||||
$langConvFactory->method( 'getLanguageConverter' )->willReturn( $langConv );
|
||||
$this->setService( 'LanguageConverterFactory', $langConvFactory );
|
||||
|
||||
return $langConvFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Build test Title object
|
||||
* @return Title
|
||||
*/
|
||||
private function getTitle() {
|
||||
$languageMock = $this->createMock( Language::class );
|
||||
$title = $this->createMock( Title::class );
|
||||
$title->method( 'getPageLanguage' )
|
||||
|
@ -55,10 +62,19 @@ class LanguagesHelperTest extends MediaWikiIntegrationTestCase {
|
|||
* @covers ::doesTitleHasLanguagesOrVariants
|
||||
*/
|
||||
public function testReturnsWhenOutputPageHasLangLinks() {
|
||||
$helper = new LanguagesHelper( $this->getOutput( [ 'pl:StronaTestowa', 'en:TestPage' ] ) );
|
||||
$helper = new LanguagesHelper(
|
||||
$this->getLanguageConverterFactory( false ),
|
||||
$this->getOutput( [ 'pl:StronaTestowa', 'en:TestPage' ] )
|
||||
);
|
||||
|
||||
$this->assertTrue( $helper->doesTitleHasLanguagesOrVariants( $this->getTitle( false ) ) );
|
||||
$this->assertTrue( $helper->doesTitleHasLanguagesOrVariants( $this->getTitle( true ) ) );
|
||||
$this->assertTrue( $helper->doesTitleHasLanguagesOrVariants( $this->getTitle() ) );
|
||||
|
||||
$helper = new LanguagesHelper(
|
||||
$this->getLanguageConverterFactory( true ),
|
||||
$this->getOutput( [ 'pl:StronaTestowa', 'en:TestPage' ] )
|
||||
);
|
||||
|
||||
$this->assertTrue( $helper->doesTitleHasLanguagesOrVariants( $this->getTitle() ) );
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -66,11 +82,20 @@ class LanguagesHelperTest extends MediaWikiIntegrationTestCase {
|
|||
* @covers ::doesTitleHasLanguagesOrVariants
|
||||
*/
|
||||
public function testReturnsWhenOutputDoesNotHaveLangLinks() {
|
||||
$helper = new LanguagesHelper( $this->getOutput( [] ) );
|
||||
$helper = new LanguagesHelper(
|
||||
$this->getLanguageConverterFactory( false ),
|
||||
$this->getOutput( [] )
|
||||
);
|
||||
|
||||
$this->assertFalse( $helper->doesTitleHasLanguagesOrVariants(
|
||||
$this->getTitle( false ) ) );
|
||||
$this->getTitle() ) );
|
||||
|
||||
$helper = new LanguagesHelper(
|
||||
$this->getLanguageConverterFactory( true ),
|
||||
$this->getOutput( [] )
|
||||
);
|
||||
|
||||
$this->assertTrue( $helper->doesTitleHasLanguagesOrVariants(
|
||||
$this->getTitle( true ) ) );
|
||||
$this->getTitle() ) );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue