From bfa6b4cab420dde0d51e3f497f95e56ddaffd966 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Wed, 17 Sep 2014 17:02:24 -0700 Subject: [PATCH] MediaWikiTestCase: Centralise insertPage() logic from SearchEngineTest Make it re-usable for other tests and update SearchEngineTest to use the addDBData (which is called automatically) instead of manually keeping track of the state. Change-Id: I75a6951545d9824e71e00f0f96936c53b400dce6 --- tests/phpunit/MediaWikiTestCase.php | 35 +++++++++- .../includes/search/SearchEngineTest.php | 67 +++++-------------- 2 files changed, 50 insertions(+), 52 deletions(-) diff --git a/tests/phpunit/MediaWikiTestCase.php b/tests/phpunit/MediaWikiTestCase.php index 995853ea79..4abb4e5cf2 100644 --- a/tests/phpunit/MediaWikiTestCase.php +++ b/tests/phpunit/MediaWikiTestCase.php @@ -428,6 +428,34 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase { return false; } + /** + * Insert a new page. + * + * Should be called from addDBData(). + * + * @since 1.25 + * @param string $pageName Page name + * @param string $text Page's content + * @return array Title object and page id + */ + protected function insertPage( $pageName, $text = 'Sample page for unit test.' ) { + $title = Title::newFromText( $pageName, 0 ); + + $user = User::newFromName( 'WikiSysop' ); + $comment = __METHOD__ . ': Sample page for unit test.'; + + // Avoid memory leak...? + LinkCache::singleton()->clear(); + + $page = WikiPage::factory( $title ); + $page->doEditContent( ContentHandler::makeContent( $text, $title ), $comment, 0, false, $user ); + + return array( + 'title' => $title, + 'id' => $page->getId(), + ); + } + /** * Stub. If a test needs to add additional data to the database, it should * implement this method and do so @@ -464,7 +492,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase { User::resetIdByNameCache(); - //Make sysop user + // Make sysop user $user = User::newFromName( 'UTSysop' ); if ( $user->idForName() == 0 ) { @@ -476,7 +504,7 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase { $user->saveSettings(); } - //Make 1 page with 1 revision + // Make 1 page with 1 revision $page = WikiPage::factory( Title::newFromText( 'UTPage' ) ); if ( $page->getId() == 0 ) { $page->doEditContent( @@ -484,7 +512,8 @@ abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase { 'UTPageSummary', EDIT_NEW, false, - User::newFromName( 'UTSysop' ) ); + User::newFromName( 'UTSysop' ) + ); } } diff --git a/tests/phpunit/includes/search/SearchEngineTest.php b/tests/phpunit/includes/search/SearchEngineTest.php index 3da1361530..d0cbfa0a32 100644 --- a/tests/phpunit/includes/search/SearchEngineTest.php +++ b/tests/phpunit/includes/search/SearchEngineTest.php @@ -14,8 +14,6 @@ class SearchEngineTest extends MediaWikiLangTestCase { */ protected $search; - protected $pageList; - /** * Checks for database type & version. * Will skip current test if DB does not support search. @@ -37,10 +35,6 @@ class SearchEngineTest extends MediaWikiLangTestCase { 'wgSearchType' => $searchType ) ); - if ( !isset( self::$pageList ) ) { - $this->addPages(); - } - $this->search = new $searchType( $this->db ); } @@ -50,33 +44,32 @@ class SearchEngineTest extends MediaWikiLangTestCase { parent::tearDown(); } - protected function addPages() { + public function addDBData() { if ( !$this->isWikitextNS( NS_MAIN ) ) { // @todo cover the case of non-wikitext content in the main namespace return; } - $this->insertPage( "Not_Main_Page", "This is not a main page", 0 ); + $this->insertPage( 'Not_Main_Page', 'This is not a main page' ); $this->insertPage( 'Talk:Not_Main_Page', - 'This is not a talk page to the main page, see [[smithee]]', - 1 + 'This is not a talk page to the main page, see [[smithee]]' ); - $this->insertPage( 'Smithee', 'A smithee is one who smiths. See also [[Alan Smithee]]', 0 ); - $this->insertPage( 'Talk:Smithee', 'This article sucks.', 1 ); - $this->insertPage( 'Unrelated_page', 'Nothing in this page is about the S word.', 0 ); - $this->insertPage( 'Another_page', 'This page also is unrelated.', 0 ); - $this->insertPage( 'Help:Help', 'Help me!', 4 ); - $this->insertPage( 'Thppt', 'Blah blah', 0 ); - $this->insertPage( 'Alan_Smithee', 'yum', 0 ); - $this->insertPage( 'Pages', 'are\'food', 0 ); - $this->insertPage( 'HalfOneUp', 'AZ', 0 ); - $this->insertPage( 'FullOneUp', 'AZ', 0 ); - $this->insertPage( 'HalfTwoLow', 'az', 0 ); - $this->insertPage( 'FullTwoLow', 'az', 0 ); - $this->insertPage( 'HalfNumbers', '1234567890', 0 ); - $this->insertPage( 'FullNumbers', '1234567890', 0 ); - $this->insertPage( 'DomainName', 'example.com', 0 ); + $this->insertPage( 'Smithee', 'A smithee is one who smiths. See also [[Alan Smithee]]' ); + $this->insertPage( 'Talk:Smithee', 'This article sucks.' ); + $this->insertPage( 'Unrelated_page', 'Nothing in this page is about the S word.' ); + $this->insertPage( 'Another_page', 'This page also is unrelated.' ); + $this->insertPage( 'Help:Help', 'Help me!' ); + $this->insertPage( 'Thppt', 'Blah blah' ); + $this->insertPage( 'Alan_Smithee', 'yum' ); + $this->insertPage( 'Pages', 'are\'food' ); + $this->insertPage( 'HalfOneUp', 'AZ' ); + $this->insertPage( 'FullOneUp', 'AZ' ); + $this->insertPage( 'HalfTwoLow', 'az' ); + $this->insertPage( 'FullTwoLow', 'az' ); + $this->insertPage( 'HalfNumbers', '1234567890' ); + $this->insertPage( 'FullNumbers', '1234567890' ); + $this->insertPage( 'DomainName', 'example.com' ); } protected function fetchIds( $results ) { @@ -101,30 +94,6 @@ class SearchEngineTest extends MediaWikiLangTestCase { return $matches; } - /** - * Insert a new page - * - * @param string $pageName Page name - * @param string $text Page's content - * @param int $ns Unused - */ - protected function insertPage( $pageName, $text, $ns ) { - $title = Title::newFromText( $pageName, $ns ); - - $user = User::newFromName( 'WikiSysop' ); - $comment = 'Search Test'; - - // avoid memory leak...? - LinkCache::singleton()->clear(); - - $page = WikiPage::factory( $title ); - $page->doEditContent( ContentHandler::makeContent( $text, $title ), $comment, 0, false, $user ); - - $this->pageList[] = array( $title, $page->getId() ); - - return true; - } - public function testFullWidth() { $this->assertEquals( array( 'FullOneUp', 'FullTwoLow', 'HalfOneUp', 'HalfTwoLow' ), -- 2.20.1