2018-11-19 19:07:30 +00:00
|
|
|
<?php
|
|
|
|
|
|
2019-08-26 12:24:37 +00:00
|
|
|
use MediaWiki\MediaWikiServices;
|
|
|
|
|
|
2018-11-19 19:07:30 +00:00
|
|
|
/**
|
|
|
|
|
* @covers \MagicWordFactory
|
|
|
|
|
*
|
|
|
|
|
* @author Derick N. Alangi
|
|
|
|
|
*/
|
2019-06-13 23:00:08 +00:00
|
|
|
class MagicWordFactoryTest extends MediaWikiTestCase {
|
2018-12-18 10:11:20 +00:00
|
|
|
private function makeMagicWordFactory( Language $contLang = null ) {
|
2019-08-26 12:24:37 +00:00
|
|
|
return new MagicWordFactory( $contLang ?:
|
|
|
|
|
MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 'en' ) );
|
2018-11-19 19:07:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testGetContentLanguage() {
|
2019-08-26 12:24:37 +00:00
|
|
|
$contLang = MediaWikiServices::getInstance()->getLanguageFactory()->getLanguage( 'en' );
|
2018-11-19 19:07:30 +00:00
|
|
|
|
|
|
|
|
$magicWordFactory = $this->makeMagicWordFactory( $contLang );
|
2018-12-18 10:11:20 +00:00
|
|
|
$magicWordContLang = $magicWordFactory->getContentLanguage();
|
2018-11-19 19:07:30 +00:00
|
|
|
|
2018-12-18 10:11:20 +00:00
|
|
|
$this->assertSame( $contLang, $magicWordContLang );
|
2018-11-19 19:07:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testGetMagicWord() {
|
|
|
|
|
$magicWordIdValid = 'pageid';
|
2018-12-18 10:11:20 +00:00
|
|
|
$magicWordFactory = $this->makeMagicWordFactory();
|
2018-11-19 19:07:30 +00:00
|
|
|
$mwActual = $magicWordFactory->get( $magicWordIdValid );
|
|
|
|
|
$contLang = $magicWordFactory->getContentLanguage();
|
|
|
|
|
$expected = new MagicWord( $magicWordIdValid, [ 'PAGEID' ], false, $contLang );
|
|
|
|
|
|
|
|
|
|
$this->assertEquals( $expected, $mwActual );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testGetInvalidMagicWord() {
|
2018-12-18 10:11:20 +00:00
|
|
|
$magicWordFactory = $this->makeMagicWordFactory();
|
2018-11-19 19:07:30 +00:00
|
|
|
|
2019-10-03 22:20:49 +00:00
|
|
|
$this->expectException( MWException::class );
|
2018-11-19 19:07:30 +00:00
|
|
|
\Wikimedia\suppressWarnings();
|
|
|
|
|
try {
|
|
|
|
|
$magicWordFactory->get( 'invalid magic word' );
|
|
|
|
|
} finally {
|
|
|
|
|
\Wikimedia\restoreWarnings();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testGetVariableIDs() {
|
2018-12-18 10:11:20 +00:00
|
|
|
$magicWordFactory = $this->makeMagicWordFactory();
|
2018-11-19 19:07:30 +00:00
|
|
|
$varIds = $magicWordFactory->getVariableIDs();
|
|
|
|
|
|
|
|
|
|
$this->assertInternalType( 'array', $varIds );
|
2018-12-18 10:11:20 +00:00
|
|
|
$this->assertNotEmpty( $varIds );
|
|
|
|
|
$this->assertContainsOnly( 'string', $varIds );
|
2018-11-19 19:07:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testGetSubstIDs() {
|
2018-12-18 10:11:20 +00:00
|
|
|
$magicWordFactory = $this->makeMagicWordFactory();
|
2018-11-19 19:07:30 +00:00
|
|
|
$substIds = $magicWordFactory->getSubstIDs();
|
|
|
|
|
|
|
|
|
|
$this->assertInternalType( 'array', $substIds );
|
2018-12-18 10:11:20 +00:00
|
|
|
$this->assertNotEmpty( $substIds );
|
|
|
|
|
$this->assertContainsOnly( 'string', $substIds );
|
2018-11-19 19:07:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Test both valid and invalid caching hints paths
|
|
|
|
|
*/
|
|
|
|
|
public function testGetCacheTTL() {
|
2018-12-18 10:11:20 +00:00
|
|
|
$magicWordFactory = $this->makeMagicWordFactory();
|
2018-11-19 19:07:30 +00:00
|
|
|
$actual = $magicWordFactory->getCacheTTL( 'localday' );
|
|
|
|
|
|
|
|
|
|
$this->assertSame( 3600, $actual );
|
|
|
|
|
|
|
|
|
|
$actual = $magicWordFactory->getCacheTTL( 'currentmonth' );
|
|
|
|
|
$this->assertSame( 86400, $actual );
|
|
|
|
|
|
|
|
|
|
$actual = $magicWordFactory->getCacheTTL( 'invalid' );
|
|
|
|
|
$this->assertSame( -1, $actual );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testGetDoubleUnderscoreArray() {
|
2018-12-18 10:11:20 +00:00
|
|
|
$magicWordFactory = $this->makeMagicWordFactory();
|
2018-11-19 19:07:30 +00:00
|
|
|
$actual = $magicWordFactory->getDoubleUnderscoreArray();
|
|
|
|
|
|
|
|
|
|
$this->assertInstanceOf( MagicWordArray::class, $actual );
|
|
|
|
|
}
|
|
|
|
|
}
|