31 "WikitextContentTest_testGetParserOutput",
34 "<div class=\"mw-parser-output\"><p>hello <i>world</i>\n</p>\n\n\n</div>"
42 [
"WikitextContentTest_testGetSecondaryDataUpdates_1",
45 LinksUpdate::class => [
51 [
"WikitextContentTest_testGetSecondaryDataUpdates_2",
54 LinksUpdate::class => [
57 [
'World_test_21344' => 0 ]
73 $title = Title::newFromText( $title, $ns );
75 $content = ContentHandler::makeContent( $text, $title, $model );
77 $page = WikiPage::factory( $title );
78 $page->doEditContent(
$content,
'' );
80 $updates =
$content->getSecondaryDataUpdates( $title );
83 foreach ( $updates as $update ) {
88 foreach ( $expectedStuff as $class => $fieldValues ) {
91 $update = $updates[$class];
93 foreach ( $fieldValues as $field =>
$value ) {
94 $v = $update->$field; #
if the field doesn
't exist, just crash and burn
98 "unexpected value for field $field in instance of $class"
103 $page->doDeleteArticle( '' );
106 public static function dataGetSection() {
128 public function testGetSection( $text, $sectionId, $expectedText ) {
129 $content = $this->newContent( $text );
131 $sectionContent = $content->getSection( $sectionId );
132 if ( is_object( $sectionContent ) ) {
133 $sectionText = $sectionContent->getText();
135 $sectionText = $sectionContent;
138 $this->assertEquals( $expectedText, $sectionText );
141 public static function dataReplaceSection() {
147 trim( preg_replace( '/^Intro/sm
', 'No more
', self::$sections ) )
157 "== TEST ==\nmore fun",
160 '/^== test ==.*== foo ==/sm
', "== TEST ==\nmore fun\n\n== foo ==",
174 trim( self::$sections ) . "\n\n\n== New ==\n\nNo more"
183 public function testReplaceSection( $text, $section, $with, $sectionTitle, $expected ) {
184 $content = $this->newContent( $text );
186 $c = $content->replaceSection( $section, $this->newContent( $with ), $sectionTitle );
188 $this->assertEquals( $expected, $c ? $c->getText() : null );
194 public function testAddSectionHeader() {
195 $content = $this->newContent( 'hello world
' );
196 $content = $content->addSectionHeader( 'test
' );
198 $this->assertEquals( "== test ==\n\nhello world", $content->getText() );
201 public static function dataPreSaveTransform() {
203 [ 'hello
this is ~~~
',
204 "hello this is [[Special:Contributions/127.0.0.1|127.0.0.1]]",
206 [ 'hello \
'\'this\
'\' is <nowiki>~~~</nowiki>
',
207 'hello \
'\'this\
'\' is <nowiki>~~~</nowiki>
',
216 public static function dataPreloadTransform() {
223 'hello \
'\'this\
'\' is <noinclude>foo</noinclude><includeonly>bar</includeonly>
',
224 'hello \
'\'this\
'\' is bar
',
229 public static function dataGetRedirectTarget() {
231 [ '#REDIRECT [[Test]]
',
237 [ '* #REDIRECT [[Test]]
',
243 public static function dataGetTextForSummary() {
253 [ '[[hello
world]].
',
260 public static function dataIsCountable() {
292 [ '#REDIRECT [[
bar]]
',
297 [ '#REDIRECT [[
bar]]
',
308 public function testMatchMagicWord() {
309 $mw = MediaWikiServices::getInstance()->getMagicWordFactory()->get( "staticredirect" );
311 $content = $this->newContent( "#REDIRECT [[FOO]]\n__STATICREDIRECT__" );
312 $this->assertTrue( $content->matchMagicWord( $mw ), "should have matched magic word" );
314 $content = $this->newContent( "#REDIRECT [[FOO]]" );
316 $content->matchMagicWord( $mw ),
317 "should not have matched magic word"
324 public function testUpdateRedirect() {
325 $target = Title::newFromText( "testUpdateRedirect_target" );
327 // test with non-redirect page
328 $content = $this->newContent( "hello world." );
329 $newContent = $content->updateRedirect( $target );
331 $this->assertTrue( $content->equals( $newContent ), "content should be unchanged" );
333 // test with actual redirect
334 $content = $this->newContent( "#REDIRECT [[Someplace]]" );
335 $newContent = $content->updateRedirect( $target );
337 $this->assertFalse( $content->equals( $newContent ), "content should have changed" );
338 $this->assertTrue( $newContent->isRedirect(), "new content should be a redirect" );
341 $target->getFullText(),
342 $newContent->getRedirectTarget()->getFullText()
349 public function testGetModel() {
350 $content = $this->newContent( "hello world." );
352 $this->assertEquals( CONTENT_MODEL_WIKITEXT, $content->getModel() );
358 public function testGetContentHandler() {
359 $content = $this->newContent( "hello world." );
361 $this->assertEquals( CONTENT_MODEL_WIKITEXT, $content->getContentHandler()->getModelID() );
368 public function testRedirectParserOption() {
371 // Set up hook and its reporting variables
373 $redirectTarget = null;
374 $this->mergeMwGlobalArrayValue( 'wgHooks
', [
375 'InternalParseBeforeLinks
' => [
376 function ( &$parser, &$text, &$stripState ) use ( &$wikitext, &$redirectTarget ) {
378 $redirectTarget = $parser->getOptions()->getRedirectTarget();
383 // Test with non-redirect page
385 $redirectTarget = false;
386 $content = $this->newContent( 'hello world.
' );
387 $options = ParserOptions::newCanonical( 'canonical
' );
388 $options->setRedirectTarget( $title );
389 $content->getParserOutput( $title, null, $options );
390 $this->assertEquals( 'hello world.
', $wikitext,
391 'Wikitext passed to hook was not as expected
'
393 $this->assertEquals( null, $redirectTarget, 'Redirect
seen in hook was not
null' );
394 $this->assertEquals( $title, $options->getRedirectTarget(),
400 $redirectTarget =
false;
402 "#REDIRECT [[TestRedirectParserOption/redir]]\nhello redirect."
404 $options = ParserOptions::newCanonical(
'canonical' );
409 'Wikitext passed to hook was not as expected'
414 'Redirect seen in hook was null' );
416 'TestRedirectParserOption/redir',
417 $redirectTarget->getFullText(),
418 'Redirect seen in hook was not the expected title'
423 'ParserOptions\' redirectTarget was changed'
441 [ LinksDeletionUpdate::class => [] ]
445 [ LinksDeletionUpdate::class => [] ]
456 $titleObj = Title::newFromText( __CLASS__ );
459 $pstContent =
$content->preSaveTransform(
463 $this->
assertTrue( $pstContent->getParserOutput( $titleObj )->getFlag(
'user-signature' ) );
and that you know you can do these things To protect your we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibilities for you if you distribute copies of the or if you modify it For if you distribute copies of such a whether gratis or for a you must give the recipients all the rights that you have You must make sure that receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two and(2) offer you this license which gives you legal permission to copy
Content for JavaScript pages.
Set options of the Parser.
ContentHandler Database ^— needed, because we do need the database to test link updates.
Content object implementation for representing flat text.
testRedirectParserOption()
ParserOptions::getRedirectTarget ParserOptions::setRedirectTarget.
static dataGetParserOutput()
testHadSignature()
WikitextContent::preSaveTransform WikitextContent::fillParserOutput.
testGetSecondaryDataUpdates( $title, $model, $text, $expectedStuff)
dataGetSecondaryDataUpdates Database WikitextContent::getSecondaryDataUpdates
static dataGetDeletionUpdates()
static dataGetSecondaryDataUpdates()
Content object for wiki text pages.
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped & $options
usually copyright or history_copyright This message must be in HTML not wikitext if the section is included from a template to be included in the link
null means default in associative array with keys and values unescaped Should be merged with default with a value of false meaning to suppress the attribute in associative array with keys and values unescaped noclasses just before the function returns a value If you return true
processing should stop and the error should be shown to the user * false
globals will be eliminated from MediaWiki replaced by an application object which would be passed to constructors Whether that would be an convenient solution remains to be seen
const CONTENT_MODEL_WIKITEXT