From 5b217dfc9b125316f82ac2f3bdefc64ffb0a6c5e Mon Sep 17 00:00:00 2001 From: addshore Date: Mon, 4 Dec 2017 13:59:15 +0100 Subject: [PATCH] Tests for WikiPage::insertRedirectEntry Bug: T180989 Change-Id: I677202b22594c7fc8fcf97b805ae69726945f96d --- .../includes/page/WikiPageDbTestBase.php | 70 ++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) diff --git a/tests/phpunit/includes/page/WikiPageDbTestBase.php b/tests/phpunit/includes/page/WikiPageDbTestBase.php index fa48fb4792..f6887dd058 100644 --- a/tests/phpunit/includes/page/WikiPageDbTestBase.php +++ b/tests/phpunit/includes/page/WikiPageDbTestBase.php @@ -1227,12 +1227,80 @@ more stuff * Most of core checks the page table for redirect status, so we have to be ugly and * assert a select from the table here. */ + $this->assertRedirectTableCountForPageId( $page->getId(), $expectedRowCount ); + } + + private function assertRedirectTableCountForPageId( $pageId, $expected ) { $this->assertSelect( 'redirect', 'COUNT(*)', + [ 'rd_from' => $pageId ], + [ [ strval( $expected ) ] ] + ); + } + + /** + * @covers WikiPage::insertRedirectEntry + */ + public function testInsertRedirectEntry_insertsRedirectEntry() { + $page = $this->createPage( Title::newFromText( __METHOD__ ), 'A' ); + $this->assertRedirectTableCountForPageId( $page->getId(), 0 ); + + $targetTitle = Title::newFromText( 'SomeTarget#Frag' ); + $targetTitle->mInterwiki = 'eninter'; + $page->insertRedirectEntry( $targetTitle, null ); + + $this->assertSelect( + 'redirect', + [ 'rd_from', 'rd_namespace', 'rd_title', 'rd_fragment', 'rd_interwiki' ], [ 'rd_from' => $page->getId() ], - [ [ strval( $expectedRowCount ) ] ] + [ [ + strval( $page->getId() ), + strval( $targetTitle->getNamespace() ), + strval( $targetTitle->getDBkey() ), + strval( $targetTitle->getFragment() ), + strval( $targetTitle->getInterwiki() ), + ] ] ); } + /** + * @covers WikiPage::insertRedirectEntry + */ + public function testInsertRedirectEntry_insertsRedirectEntryWithPageLatest() { + $page = $this->createPage( Title::newFromText( __METHOD__ ), 'A' ); + $this->assertRedirectTableCountForPageId( $page->getId(), 0 ); + + $targetTitle = Title::newFromText( 'SomeTarget#Frag' ); + $targetTitle->mInterwiki = 'eninter'; + $page->insertRedirectEntry( $targetTitle, $page->getLatest() ); + + $this->assertSelect( + 'redirect', + [ 'rd_from', 'rd_namespace', 'rd_title', 'rd_fragment', 'rd_interwiki' ], + [ 'rd_from' => $page->getId() ], + [ [ + strval( $page->getId() ), + strval( $targetTitle->getNamespace() ), + strval( $targetTitle->getDBkey() ), + strval( $targetTitle->getFragment() ), + strval( $targetTitle->getInterwiki() ), + ] ] + ); + } + + /** + * @covers WikiPage::insertRedirectEntry + */ + public function testInsertRedirectEntry_doesNotInsertIfPageLatestIncorrect() { + $page = $this->createPage( Title::newFromText( __METHOD__ ), 'A' ); + $this->assertRedirectTableCountForPageId( $page->getId(), 0 ); + + $targetTitle = Title::newFromText( 'SomeTarget#Frag' ); + $targetTitle->mInterwiki = 'eninter'; + $page->insertRedirectEntry( $targetTitle, 215251 ); + + $this->assertRedirectTableCountForPageId( $page->getId(), 0 ); + } + } -- 2.20.1