X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/tests/phpunit/includes/PageArchiveTest.php diff --git a/tests/phpunit/includes/PageArchiveTest.php b/tests/phpunit/includes/PageArchiveTest.php new file mode 100644 index 00000000..6420c395 --- /dev/null +++ b/tests/phpunit/includes/PageArchiveTest.php @@ -0,0 +1,110 @@ +tablesUsed = array_merge( + $this->tablesUsed, + [ + 'page', + 'revision', + 'ip_changes', + 'text', + 'archive', + 'recentchanges', + 'logging', + 'page_props', + ] + ); + } + + protected function setUp() { + parent::setUp(); + + // First create our dummy page + $page = Title::newFromText( 'PageArchiveTest_thePage' ); + $page = new WikiPage( $page ); + $content = ContentHandler::makeContent( + 'testing', + $page->getTitle(), + CONTENT_MODEL_WIKITEXT + ); + $page->doEditContent( $content, 'testing', EDIT_NEW ); + + // Insert IP revision + $this->ipEditor = '2600:387:ed7:947e:8c16:a1ad:dd34:1dd7'; + $rev = new Revision( [ + 'text' => 'Lorem Ipsum', + 'comment' => 'just a test', + 'page' => $page->getId(), + 'user_text' => $this->ipEditor, + ] ); + $dbw = wfGetDB( DB_MASTER ); + $this->ipRevId = $rev->insertOn( $dbw ); + + // Delete the page + $page->doDeleteArticleReal( 'Just a test deletion' ); + + $this->archivedPage = new PageArchive( $page->getTitle() ); + } + + /** + * @covers PageArchive::undelete + */ + public function testUndeleteRevisions() { + // First make sure old revisions are archived + $dbr = wfGetDB( DB_REPLICA ); + $res = $dbr->select( 'archive', '*', [ 'ar_rev_id' => $this->ipRevId ] ); + $row = $res->fetchObject(); + $this->assertEquals( $this->ipEditor, $row->ar_user_text ); + + // Should not be in revision + $res = $dbr->select( 'revision', '*', [ 'rev_id' => $this->ipRevId ] ); + $this->assertFalse( $res->fetchObject() ); + + // Should not be in ip_changes + $res = $dbr->select( 'ip_changes', '*', [ 'ipc_rev_id' => $this->ipRevId ] ); + $this->assertFalse( $res->fetchObject() ); + + // Restore the page + $this->archivedPage->undelete( [] ); + + // Should be back in revision + $res = $dbr->select( 'revision', '*', [ 'rev_id' => $this->ipRevId ] ); + $row = $res->fetchObject(); + $this->assertEquals( $this->ipEditor, $row->rev_user_text ); + + // Should be back in ip_changes + $res = $dbr->select( 'ip_changes', '*', [ 'ipc_rev_id' => $this->ipRevId ] ); + $row = $res->fetchObject(); + $this->assertEquals( IP::toHex( $this->ipEditor ), $row->ipc_hex ); + } +}