From 437d48ab681e3f9e2aed34d72b2f20a63ebfff9c Mon Sep 17 00:00:00 2001 From: mhutti1 Date: Fri, 25 Dec 2015 21:14:02 +0100 Subject: [PATCH] Added a simple smoke test for export Added ExportTest.php to check that exported xml is valid. Bug: T116883 Change-Id: I76151a6ab4f88ab1904627ad1d00ed487d0ab606 --- tests/phpunit/includes/ExportTest.php | 71 +++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 tests/phpunit/includes/ExportTest.php diff --git a/tests/phpunit/includes/ExportTest.php b/tests/phpunit/includes/ExportTest.php new file mode 100644 index 0000000000..202603030b --- /dev/null +++ b/tests/phpunit/includes/ExportTest.php @@ -0,0 +1,71 @@ + + */ +class ExportTest extends MediaWikiLangTestCase { + + protected function setUp() { + parent::setUp(); + $this->setMwGlobals( array( + 'wgContLang' => Language::factory( 'en' ), + 'wgLanguageCode' => 'en', + 'wgCapitalLinks' => true, + ) ); + } + + /** + * @covers WikiExporter::pageByTitle + */ + public function testPageByTitle() { + global $wgContLang; + $pageTitle = 'UTPage'; + + $exporter = new WikiExporter( + $this->db, + WikiExporter::FULL + ); + + $title = Title::newFromText( $pageTitle ); + + ob_start(); + $exporter->openStream(); + $exporter->pageByTitle( $title ); + $exporter->closeStream(); + $xmlString = ob_get_clean(); + + // This throws error if invalid xml output + $xmlObject = simplexml_load_string( $xmlString ); + + /** + * Check namespaces match xml + * FIXME: PHP 5.3 support. When we don't support PHP 5.3, + * add ->namespace to object and remove from array + */ + $xmlNamespaces = (array) $xmlObject->siteinfo->namespaces; + $xmlNamespaces = str_replace( ' ', '_', $xmlNamespaces['namespace'] ); + unset ( $xmlNamespaces[ '@attributes' ] ); + foreach ( $xmlNamespaces as &$namespaceObject ) { + if ( is_object( $namespaceObject ) ) { + $namespaceObject = ''; + } + } + + $actualNamespaces = (array) $wgContLang->getNamespaces(); + $actualNamespaces = array_values( $actualNamespaces ); + $this->assertEquals( $actualNamespaces, $xmlNamespaces ); + + // Check xml page title correct + $xmlTitle = (array) $xmlObject->page->title; + $this->assertEquals( $pageTitle, $xmlTitle[0] ); + + // Check xml page text is not empty + $text = (array) $xmlObject->page->revision->text; + $this->assertNotEquals( '', $text[0] ); + } + +} -- 2.20.1