X-Git-Url: http://git.cyclocoop.org/%22%20.%20generer_url_ecrire%28%22statistiques_visites%22%2C%22%22%29%20.%20%22?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2FPageArchiveTest.php;h=623d4a65f173076eedd35586e24079ba1e10a269;hb=bb8c060128a79532e1b6885fb3ebd6174d3f4d4d;hp=6420c395ad96c923f46fdf92c8c207c90e2b9640;hpb=587d08c5a626f8195def9f82ee83e17c85824db8;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/PageArchiveTest.php b/tests/phpunit/includes/PageArchiveTest.php index 6420c395ad..623d4a65f1 100644 --- a/tests/phpunit/includes/PageArchiveTest.php +++ b/tests/phpunit/includes/PageArchiveTest.php @@ -11,8 +11,9 @@ * ^--- important, causes tests not to fail with timeout */ class PageArchiveTest extends MediaWikiTestCase { + /** - * @var WikiPage $archivedPage + * @var PageArchive $archivedPage */ private $archivedPage; @@ -49,6 +50,10 @@ class PageArchiveTest extends MediaWikiTestCase { protected function setUp() { parent::setUp(); + $this->setMwGlobals( 'wgCommentTableSchemaMigrationStage', MIGRATION_OLD ); + $this->setMwGlobals( 'wgActorTableSchemaMigrationStage', MIGRATION_OLD ); + $this->overrideMwServices(); + // First create our dummy page $page = Title::newFromText( 'PageArchiveTest_thePage' ); $page = new WikiPage( $page ); @@ -78,33 +83,183 @@ class PageArchiveTest extends MediaWikiTestCase { /** * @covers PageArchive::undelete + * @covers PageArchive::undeleteRevisions */ public function testUndeleteRevisions() { // First make sure old revisions are archived $dbr = wfGetDB( DB_REPLICA ); - $res = $dbr->select( 'archive', '*', [ 'ar_rev_id' => $this->ipRevId ] ); + $arQuery = Revision::getArchiveQueryInfo(); + $res = $dbr->select( + $arQuery['tables'], + $arQuery['fields'], + [ 'ar_rev_id' => $this->ipRevId ], + __METHOD__, + [], + $arQuery['joins'] + ); $row = $res->fetchObject(); $this->assertEquals( $this->ipEditor, $row->ar_user_text ); // Should not be in revision - $res = $dbr->select( 'revision', '*', [ 'rev_id' => $this->ipRevId ] ); + $res = $dbr->select( 'revision', '1', [ 'rev_id' => $this->ipRevId ] ); $this->assertFalse( $res->fetchObject() ); // Should not be in ip_changes - $res = $dbr->select( 'ip_changes', '*', [ 'ipc_rev_id' => $this->ipRevId ] ); + $res = $dbr->select( 'ip_changes', '1', [ '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 ] ); + $revQuery = Revision::getQueryInfo(); + $res = $dbr->select( + $revQuery['tables'], + $revQuery['fields'], + [ 'rev_id' => $this->ipRevId ], + __METHOD__, + [], + $revQuery['joins'] + ); $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 ] ); + $res = $dbr->select( 'ip_changes', [ 'ipc_hex' ], [ 'ipc_rev_id' => $this->ipRevId ] ); $row = $res->fetchObject(); $this->assertEquals( IP::toHex( $this->ipEditor ), $row->ipc_hex ); } + + /** + * @covers PageArchive::listRevisions + */ + public function testListRevisions() { + $this->setMwGlobals( 'wgCommentTableSchemaMigrationStage', MIGRATION_OLD ); + $this->overrideMwServices(); + + $revisions = $this->archivedPage->listRevisions(); + $this->assertEquals( 2, $revisions->numRows() ); + + // Get the rows as arrays + $row1 = (array)$revisions->current(); + $row2 = (array)$revisions->next(); + // Unset the timestamps (we assume they will be right... + $this->assertInternalType( 'string', $row1['ar_timestamp'] ); + $this->assertInternalType( 'string', $row2['ar_timestamp'] ); + unset( $row1['ar_timestamp'] ); + unset( $row2['ar_timestamp'] ); + + $this->assertEquals( + [ + 'ar_minor_edit' => '0', + 'ar_user' => '0', + 'ar_user_text' => '2600:387:ed7:947e:8c16:a1ad:dd34:1dd7', + 'ar_actor' => null, + 'ar_len' => '11', + 'ar_deleted' => '0', + 'ar_rev_id' => '3', + 'ar_sha1' => '0qdrpxl537ivfnx4gcpnzz0285yxryy', + 'ar_page_id' => '2', + 'ar_comment_text' => 'just a test', + 'ar_comment_data' => null, + 'ar_comment_cid' => null, + 'ar_content_format' => null, + 'ar_content_model' => null, + 'ts_tags' => null, + 'ar_id' => '2', + 'ar_namespace' => '0', + 'ar_title' => 'PageArchiveTest_thePage', + 'ar_text_id' => '3', + 'ar_parent_id' => '2', + ], + $row1 + ); + $this->assertEquals( + [ + 'ar_minor_edit' => '0', + 'ar_user' => '0', + 'ar_user_text' => '127.0.0.1', + 'ar_actor' => null, + 'ar_len' => '7', + 'ar_deleted' => '0', + 'ar_rev_id' => '2', + 'ar_sha1' => 'pr0s8e18148pxhgjfa0gjrvpy8fiyxc', + 'ar_page_id' => '2', + 'ar_comment_text' => 'testing', + 'ar_comment_data' => null, + 'ar_comment_cid' => null, + 'ar_content_format' => null, + 'ar_content_model' => null, + 'ts_tags' => null, + 'ar_id' => '1', + 'ar_namespace' => '0', + 'ar_title' => 'PageArchiveTest_thePage', + 'ar_text_id' => '2', + 'ar_parent_id' => '0', + ], + $row2 + ); + } + + /** + * @covers PageArchive::listPagesBySearch + */ + public function testListPagesBySearch() { + $pages = PageArchive::listPagesBySearch( 'PageArchiveTest_thePage' ); + $this->assertSame( 1, $pages->numRows() ); + + $page = (array)$pages->current(); + + $this->assertSame( + [ + 'ar_namespace' => '0', + 'ar_title' => 'PageArchiveTest_thePage', + 'count' => '2', + ], + $page + ); + } + + /** + * @covers PageArchive::listPagesBySearch + */ + public function testListPagesByPrefix() { + $pages = PageArchive::listPagesByPrefix( 'PageArchiveTest' ); + $this->assertSame( 1, $pages->numRows() ); + + $page = (array)$pages->current(); + + $this->assertSame( + [ + 'ar_namespace' => '0', + 'ar_title' => 'PageArchiveTest_thePage', + 'count' => '2', + ], + $page + ); + } + + /** + * @covers PageArchive::getTextFromRow + */ + public function testGetTextFromRow() { + $row = (object)[ 'ar_text_id' => 2 ]; + $text = $this->archivedPage->getTextFromRow( $row ); + $this->assertSame( 'testing', $text ); + } + + /** + * @covers PageArchive::getLastRevisionText + */ + public function testGetLastRevisionText() { + $text = $this->archivedPage->getLastRevisionText(); + $this->assertSame( 'Lorem Ipsum', $text ); + } + + /** + * @covers PageArchive::isDeleted + */ + public function testIsDeleted() { + $this->assertTrue( $this->archivedPage->isDeleted() ); + } }