260 lines
6.1 KiB
PHP
260 lines
6.1 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @group ContentHandler
|
||
|
|
*/
|
||
|
|
class UnknownContentTest extends MediaWikiLangTestCase {
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @param string $data
|
||
|
|
* @return UnknownContent
|
||
|
|
*/
|
||
|
|
public function newContent( $data, $type = 'xyzzy' ) {
|
||
|
|
return new UnknownContent( $data, $type );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::getParserOutput
|
||
|
|
*/
|
||
|
|
public function testGetParserOutput() {
|
||
|
|
$this->setUserLang( 'en' );
|
||
|
|
$this->setContentLang( 'qqx' );
|
||
|
|
|
||
|
|
$title = Title::newFromText( 'Test' );
|
||
|
|
$content = $this->newContent( 'Horkyporky' );
|
||
|
|
|
||
|
|
$po = $content->getParserOutput( $title );
|
||
|
|
$html = $po->getText();
|
||
|
|
$html = preg_replace( '#<!--.*?-->#sm', '', $html ); // strip comments
|
||
|
|
|
||
|
|
$this->assertNotContains( 'Horkyporky', $html );
|
||
|
|
$this->assertNotContains( '(unsupported-content-model)', $html );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::preSaveTransform
|
||
|
|
*/
|
||
|
|
public function testPreSaveTransform() {
|
||
|
|
$title = Title::newFromText( 'Test' );
|
||
|
|
$user = $this->getTestUser()->getUser();
|
||
|
|
$content = $this->newContent( 'Horkyporky ~~~' );
|
||
|
|
|
||
|
|
$options = new ParserOptions();
|
||
|
|
|
||
|
|
$this->assertSame( $content, $content->preSaveTransform( $title, $user, $options ) );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::preloadTransform
|
||
|
|
*/
|
||
|
|
public function testPreloadTransform() {
|
||
|
|
$title = Title::newFromText( 'Test' );
|
||
|
|
$content = $this->newContent( 'Horkyporky ~~~' );
|
||
|
|
|
||
|
|
$options = new ParserOptions();
|
||
|
|
|
||
|
|
$this->assertSame( $content, $content->preloadTransform( $title, $options ) );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::getRedirectTarget
|
||
|
|
*/
|
||
|
|
public function testGetRedirectTarget() {
|
||
|
|
$content = $this->newContent( '#REDIRECT [[Horkyporky]]' );
|
||
|
|
$this->assertNull( $content->getRedirectTarget() );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::isRedirect
|
||
|
|
*/
|
||
|
|
public function testIsRedirect() {
|
||
|
|
$content = $this->newContent( '#REDIRECT [[Horkyporky]]' );
|
||
|
|
$this->assertFalse( $content->isRedirect() );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::isCountable
|
||
|
|
*/
|
||
|
|
public function testIsCountable() {
|
||
|
|
$content = $this->newContent( '[[Horkyporky]]' );
|
||
|
|
$this->assertFalse( $content->isCountable( true ) );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::getTextForSummary
|
||
|
|
*/
|
||
|
|
public function testGetTextForSummary() {
|
||
|
|
$content = $this->newContent( 'Horkyporky' );
|
||
|
|
$this->assertSame( '', $content->getTextForSummary() );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::getTextForSearchIndex
|
||
|
|
*/
|
||
|
|
public function testGetTextForSearchIndex() {
|
||
|
|
$content = $this->newContent( 'Horkyporky' );
|
||
|
|
$this->assertSame( '', $content->getTextForSearchIndex() );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::copy
|
||
|
|
*/
|
||
|
|
public function testCopy() {
|
||
|
|
$content = $this->newContent( 'hello world.' );
|
||
|
|
$copy = $content->copy();
|
||
|
|
|
||
|
|
$this->assertSame( $content, $copy );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::getSize
|
||
|
|
*/
|
||
|
|
public function testGetSize() {
|
||
|
|
$content = $this->newContent( 'hello world.' );
|
||
|
|
|
||
|
|
$this->assertEquals( 12, $content->getSize() );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::getData
|
||
|
|
*/
|
||
|
|
public function testGetData() {
|
||
|
|
$content = $this->newContent( 'hello world.' );
|
||
|
|
|
||
|
|
$this->assertEquals( 'hello world.', $content->getData() );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::getNativeData
|
||
|
|
*/
|
||
|
|
public function testGetNativeData() {
|
||
|
|
$content = $this->newContent( 'hello world.' );
|
||
|
|
|
||
|
|
$this->assertEquals( 'hello world.', $content->getNativeData() );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::getWikitextForTransclusion
|
||
|
|
*/
|
||
|
|
public function testGetWikitextForTransclusion() {
|
||
|
|
$content = $this->newContent( 'hello world.' );
|
||
|
|
|
||
|
|
$this->assertEquals( '', $content->getWikitextForTransclusion() );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::getModel
|
||
|
|
*/
|
||
|
|
public function testGetModel() {
|
||
|
|
$content = $this->newContent( "hello world.", 'horkyporky' );
|
||
|
|
|
||
|
|
$this->assertEquals( 'horkyporky', $content->getModel() );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::getContentHandler
|
||
|
|
*/
|
||
|
|
public function testGetContentHandler() {
|
||
|
|
$this->mergeMwGlobalArrayValue(
|
||
|
|
'wgContentHandlers',
|
||
|
|
[ 'horkyporky' => 'UnknownContentHandler' ]
|
||
|
|
);
|
||
|
|
|
||
|
|
$content = $this->newContent( "hello world.", 'horkyporky' );
|
||
|
|
|
||
|
|
$this->assertInstanceOf( UnknownContentHandler::class, $content->getContentHandler() );
|
||
|
|
$this->assertEquals( 'horkyporky', $content->getContentHandler()->getModelID() );
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function dataIsEmpty() {
|
||
|
|
return [
|
||
|
|
[ '', true ],
|
||
|
|
[ ' ', false ],
|
||
|
|
[ '0', false ],
|
||
|
|
[ 'hallo welt.', false ],
|
||
|
|
];
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @dataProvider dataIsEmpty
|
||
|
|
* @covers UnknownContent::isEmpty
|
||
|
|
*/
|
||
|
|
public function testIsEmpty( $text, $empty ) {
|
||
|
|
$content = $this->newContent( $text );
|
||
|
|
|
||
|
|
$this->assertEquals( $empty, $content->isEmpty() );
|
||
|
|
}
|
||
|
|
|
||
|
|
public function provideEquals() {
|
||
|
|
return [
|
||
|
|
[ new UnknownContent( "hallo", 'horky' ), null, false ],
|
||
|
|
[ new UnknownContent( "hallo", 'horky' ), new UnknownContent( "hallo", 'horky' ), true ],
|
||
|
|
[ new UnknownContent( "hallo", 'horky' ), new UnknownContent( "hallo", 'xyzzy' ), false ],
|
||
|
|
[ new UnknownContent( "hallo", 'horky' ), new JavaScriptContent( "hallo" ), false ],
|
||
|
|
[ new UnknownContent( "hallo", 'horky' ), new WikitextContent( "hallo" ), false ],
|
||
|
|
];
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @dataProvider provideEquals
|
||
|
|
* @covers UnknownContent::equals
|
||
|
|
*/
|
||
|
|
public function testEquals( Content $a, Content $b = null, $equal = false ) {
|
||
|
|
$this->assertEquals( $equal, $a->equals( $b ) );
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function provideConvert() {
|
||
|
|
return [
|
||
|
|
[ // #0
|
||
|
|
'Hallo Welt',
|
||
|
|
CONTENT_MODEL_WIKITEXT,
|
||
|
|
'lossless',
|
||
|
|
'Hallo Welt'
|
||
|
|
],
|
||
|
|
[ // #1
|
||
|
|
'Hallo Welt',
|
||
|
|
CONTENT_MODEL_WIKITEXT,
|
||
|
|
'lossless',
|
||
|
|
'Hallo Welt'
|
||
|
|
],
|
||
|
|
[ // #1
|
||
|
|
'Hallo Welt',
|
||
|
|
CONTENT_MODEL_CSS,
|
||
|
|
'lossless',
|
||
|
|
'Hallo Welt'
|
||
|
|
],
|
||
|
|
[ // #1
|
||
|
|
'Hallo Welt',
|
||
|
|
CONTENT_MODEL_JAVASCRIPT,
|
||
|
|
'lossless',
|
||
|
|
'Hallo Welt'
|
||
|
|
],
|
||
|
|
];
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::convert
|
||
|
|
*/
|
||
|
|
public function testConvert() {
|
||
|
|
$content = $this->newContent( 'More horkyporky?' );
|
||
|
|
|
||
|
|
$this->assertFalse( $content->convert( CONTENT_MODEL_TEXT ) );
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @covers UnknownContent::__construct
|
||
|
|
* @covers UnknownContentHandler::serializeContent
|
||
|
|
*/
|
||
|
|
public function testSerialize() {
|
||
|
|
$this->mergeMwGlobalArrayValue(
|
||
|
|
'wgContentHandlers',
|
||
|
|
[ 'horkyporky' => 'UnknownContentHandler' ]
|
||
|
|
);
|
||
|
|
|
||
|
|
$content = $this->newContent( 'Hörkypörky', 'horkyporky' );
|
||
|
|
|
||
|
|
$this->assertSame( 'Hörkypörky', $content->serialize() );
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|