assertEquals( $shouldMatch, ParserOutput::isLinkInternal( $server, $url ) ); } /** * @covers ParserOutput::setExtensionData * @covers ParserOutput::getExtensionData */ public function testExtensionData() { $po = new ParserOutput(); $po->setExtensionData( "one", "Foo" ); $this->assertEquals( "Foo", $po->getExtensionData( "one" ) ); $this->assertNull( $po->getExtensionData( "spam" ) ); $po->setExtensionData( "two", "Bar" ); $this->assertEquals( "Foo", $po->getExtensionData( "one" ) ); $this->assertEquals( "Bar", $po->getExtensionData( "two" ) ); $po->setExtensionData( "one", null ); $this->assertNull( $po->getExtensionData( "one" ) ); $this->assertEquals( "Bar", $po->getExtensionData( "two" ) ); } /** * @covers ParserOutput::setProperty * @covers ParserOutput::getProperty * @covers ParserOutput::unsetProperty * @covers ParserOutput::getProperties */ public function testProperties() { $po = new ParserOutput(); $po->setProperty( 'foo', 'val' ); $properties = $po->getProperties(); $this->assertEquals( $po->getProperty( 'foo' ), 'val' ); $this->assertEquals( $properties['foo'], 'val' ); $po->setProperty( 'foo', 'second val' ); $properties = $po->getProperties(); $this->assertEquals( $po->getProperty( 'foo' ), 'second val' ); $this->assertEquals( $properties['foo'], 'second val' ); $po->unsetProperty( 'foo' ); $properties = $po->getProperties(); $this->assertEquals( $po->getProperty( 'foo' ), false ); $this->assertArrayNotHasKey( 'foo', $properties ); } /** * @covers ParserOutput::getText * @dataProvider provideGetText * @param array $options Options to getText() * @param string $text Parser text * @param string $expect Expected output */ public function testGetText( $options, $text, $expect ) { $this->setMwGlobals( [ 'wgArticlePath' => '/wiki/$1', 'wgScriptPath' => '/w', 'wgScript' => '/w/index.php', ] ); $po = new ParserOutput( $text ); $actual = $po->getText( $options ); $this->assertSame( $expect, $actual ); } public static function provideGetText() { // phpcs:disable Generic.Files.LineLength $text = <<

Test document.

Section 1Section 1

One

Section 2Section 2

Two

Section 2.1Section 2.1

Two point one

Section 3Section 3

Three

EOF; $dedupText = <<This is a test document.

EOF; return [ 'No options' => [ [], $text, <<

Test document.

Section 1[edit]

One

Section 2[edit]

Two

Section 2.1[edit]

Two point one

Section 3[edit]

Three

EOF ], 'Disable section edit links' => [ [ 'enableSectionEditLinks' => false ], $text, <<

Test document.

Section 1

One

Section 2

Two

Section 2.1

Two point one

Section 3

Three

EOF ], 'Disable TOC' => [ [ 'allowTOC' => false ], $text, <<

Test document.

Section 1[edit]

One

Section 2[edit]

Two

Section 2.1[edit]

Two point one

Section 3[edit]

Three

EOF ], 'Unwrap text' => [ [ 'unwrap' => true ], $text, <<Test document.

Section 1[edit]

One

Section 2[edit]

Two

Section 2.1[edit]

Two point one

Section 3[edit]

Three

EOF ], 'Unwrap without a mw-parser-output wrapper' => [ [ 'unwrap' => true ], '
Content
', '
Content
' ], 'Unwrap with extra comment at end' => [ [ 'unwrap' => true ], '

Test document.

', '

Test document.

' ], 'Style deduplication' => [ [], $dedupText, <<This is a test document.

EOF ], 'Style deduplication disabled' => [ [ 'deduplicateStyles' => false ], $dedupText, $dedupText ], ]; // phpcs:enable } }