From aa57608c0d4bdc060bd319fa013978691573b338 Mon Sep 17 00:00:00 2001 From: addshore Date: Wed, 11 Oct 2017 14:56:37 +0100 Subject: [PATCH] RevisionStorageTest: Add tests for Revision::newFromTitle() Change-Id: I131b033d72cd4775618b972dbaf40b9f28dd3374 --- .../phpunit/includes/RevisionStorageTest.php | 89 +++++++++++++++---- 1 file changed, 71 insertions(+), 18 deletions(-) diff --git a/tests/phpunit/includes/RevisionStorageTest.php b/tests/phpunit/includes/RevisionStorageTest.php index 08f128a37f..d09870061c 100644 --- a/tests/phpunit/includes/RevisionStorageTest.php +++ b/tests/phpunit/includes/RevisionStorageTest.php @@ -104,30 +104,33 @@ class RevisionStorageTest extends MediaWikiTestCase { return $rev; } - protected function createPage( $page, $text, $model = null ) { - if ( is_string( $page ) ) { - if ( !preg_match( '/:/', $page ) && - ( $model === null || $model === CONTENT_MODEL_WIKITEXT ) - ) { - $ns = $this->getDefaultWikitextNS(); - $page = MWNamespace::getCanonicalName( $ns ) . ':' . $page; - } - - $page = Title::newFromText( $page ); + /** + * @param string $titleString + * @param string $text + * @param string|null $model + * + * @return WikiPage + */ + protected function createPage( $titleString, $text, $model = null ) { + if ( !preg_match( '/:/', $titleString ) && + ( $model === null || $model === CONTENT_MODEL_WIKITEXT ) + ) { + $ns = $this->getDefaultWikitextNS(); + $titleString = MWNamespace::getCanonicalName( $ns ) . ':' . $titleString; } - if ( $page instanceof Title ) { - $page = new WikiPage( $page ); - } + $title = Title::newFromText( $titleString ); + $wikipage = new WikiPage( $title ); - if ( $page->exists() ) { - $page->doDeleteArticle( "done" ); + // Delete the article if it already exists + if ( $wikipage->exists() ) { + $wikipage->doDeleteArticle( "done" ); } - $content = ContentHandler::makeContent( $text, $page->getTitle(), $model ); - $page->doEditContent( $content, "testing", EDIT_NEW ); + $content = ContentHandler::makeContent( $text, $title, $model ); + $wikipage->doEditContent( $content, __METHOD__, EDIT_NEW ); - return $page; + return $wikipage; } protected function assertRevEquals( Revision $orig, Revision $rev = null ) { @@ -160,6 +163,56 @@ class RevisionStorageTest extends MediaWikiTestCase { $this->assertRevEquals( $orig, $rev ); } + /** + * @covers Revision::newFromTitle + */ + public function testNewFromTitle_withoutId() { + $page = $this->createPage( + __METHOD__, + 'GOAT', + CONTENT_MODEL_WIKITEXT + ); + $latestRevId = $page->getLatest(); + + $rev = Revision::newFromTitle( $page->getTitle() ); + + $this->assertTrue( $page->getTitle()->equals( $rev->getTitle() ) ); + $this->assertEquals( $latestRevId, $rev->getId() ); + } + + /** + * @covers Revision::newFromTitle + */ + public function testNewFromTitle_withId() { + $page = $this->createPage( + __METHOD__, + 'GOAT', + CONTENT_MODEL_WIKITEXT + ); + $latestRevId = $page->getLatest(); + + $rev = Revision::newFromTitle( $page->getTitle(), $latestRevId ); + + $this->assertTrue( $page->getTitle()->equals( $rev->getTitle() ) ); + $this->assertEquals( $latestRevId, $rev->getId() ); + } + + /** + * @covers Revision::newFromTitle + */ + public function testNewFromTitle_withBadId() { + $page = $this->createPage( + __METHOD__, + 'GOAT', + CONTENT_MODEL_WIKITEXT + ); + $latestRevId = $page->getLatest(); + + $rev = Revision::newFromTitle( $page->getTitle(), $latestRevId + 1 ); + + $this->assertNull( $rev ); + } + /** * @covers Revision::newFromRow */ -- 2.20.1