Work around change in SimpleXMLElement behavior introduced in PHP 7.3.17
[lhc/web/wiklou.git] / tests / phpunit / includes / ExportTest.php
1 <?php
2
3 use MediaWiki\MediaWikiServices;
4
5 /**
6 * Test class for Export methods.
7 *
8 * @group Database
9 *
10 * @author Isaac Hutt <mhutti1@gmail.com>
11 */
12 class ExportTest extends MediaWikiLangTestCase {
13
14 protected function setUp() {
15 parent::setUp();
16 $this->setMwGlobals( [
17 'wgCapitalLinks' => true,
18 ] );
19 }
20
21 /**
22 * @covers WikiExporter::pageByTitle
23 */
24 public function testPageByTitle() {
25 $pageTitle = 'UTPage';
26
27 $exporter = new WikiExporter(
28 $this->db,
29 WikiExporter::FULL
30 );
31
32 $title = Title::newFromText( $pageTitle );
33
34 $sink = new DumpStringOutput;
35 $exporter->setOutputSink( $sink );
36 $exporter->openStream();
37 $exporter->pageByTitle( $title );
38 $exporter->closeStream();
39
40 // This throws error if invalid xml output
41 $xmlObject = simplexml_load_string( $sink );
42
43 /**
44 * Check namespaces match xml
45 */
46 foreach ( $xmlObject->siteinfo->namespaces->children() as $namespace ) {
47 // Get the text content of the SimpleXMLElement
48 $xmlNamespaces[] = (string)$namespace;
49 }
50 $xmlNamespaces = str_replace( ' ', '_', $xmlNamespaces );
51
52 $actualNamespaces = (array)MediaWikiServices::getInstance()->getContentLanguage()->
53 getNamespaces();
54 $actualNamespaces = array_values( $actualNamespaces );
55 $this->assertEquals( $actualNamespaces, $xmlNamespaces );
56
57 // Check xml page title correct
58 $xmlTitle = (array)$xmlObject->page->title;
59 $this->assertEquals( $pageTitle, $xmlTitle[0] );
60
61 // Check xml page text is not empty
62 $text = (array)$xmlObject->page->revision->text;
63 $this->assertNotEquals( '', $text[0] );
64 }
65
66 }