X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2FRevision%2FRevisionStoreDbTestBase.php;h=4040ffc76e7960fc3195c5ea84d451e1c36e5eb3;hb=af80076034fb734d652eb043c523c1d8df974e51;hp=b0b9ddf313eeedf10bb2c357ed0281c560907fc7;hpb=018d340dd6541775a65e6b3c8d6be0945901528a;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/Revision/RevisionStoreDbTestBase.php b/tests/phpunit/includes/Revision/RevisionStoreDbTestBase.php index b0b9ddf313..4040ffc76e 100644 --- a/tests/phpunit/includes/Revision/RevisionStoreDbTestBase.php +++ b/tests/phpunit/includes/Revision/RevisionStoreDbTestBase.php @@ -4,8 +4,10 @@ namespace MediaWiki\Tests\Revision; use CommentStoreComment; use Content; +use ContentHandler; use Exception; use HashBagOStuff; +use IDBAccessObject; use InvalidArgumentException; use Language; use MediaWiki\Linker\LinkTarget; @@ -81,7 +83,6 @@ abstract class RevisionStoreDbTestBase extends MediaWikiTestCase { $this->setMwGlobals( [ 'wgMultiContentRevisionSchemaMigrationStage' => $this->getMcrMigrationStage(), 'wgContentHandlerUseDB' => $this->getContentHandlerUseDB(), - 'wgActorTableSchemaMigrationStage' => SCHEMA_COMPAT_NEW, ] ); } @@ -106,7 +107,7 @@ abstract class RevisionStoreDbTestBase extends MediaWikiTestCase { * @return WikiPage */ protected function getTestPage( $pageTitle = null ) { - if ( !is_null( $pageTitle ) && $this->testPage ) { + if ( is_null( $pageTitle ) && $this->testPage ) { return $this->testPage; } @@ -1791,8 +1792,6 @@ abstract class RevisionStoreDbTestBase extends MediaWikiTestCase { * @covers \MediaWiki\Revision\RevisionStore::getKnownCurrentRevision */ public function testGetKnownCurrentRevision_userNameChange() { - global $wgActorTableSchemaMigrationStage; - $cache = new WANObjectCache( [ 'cache' => new HashBagOStuff() ] ); $this->setService( 'MainWANObjectCache', $cache ); @@ -1811,11 +1810,9 @@ abstract class RevisionStoreDbTestBase extends MediaWikiTestCase { $this->db->update( 'user', [ 'user_name' => $newUserName ], [ 'user_id' => $rev->getUser()->getId() ] ); - if ( $wgActorTableSchemaMigrationStage & SCHEMA_COMPAT_WRITE_NEW ) { - $this->db->update( 'actor', - [ 'actor_name' => $newUserName ], - [ 'actor_user' => $rev->getUser()->getId() ] ); - } + $this->db->update( 'actor', + [ 'actor_name' => $newUserName ], + [ 'actor_user' => $rev->getUser()->getId() ] ); // Reload the revision and regrab the user name. $revAfter = $store->getKnownCurrentRevision( $page->getTitle(), $rev->getId() ); @@ -1864,8 +1861,6 @@ abstract class RevisionStoreDbTestBase extends MediaWikiTestCase { * @covers \MediaWiki\Revision\RevisionStore::newRevisionFromRow */ public function testNewRevisionFromRow_userNameChange() { - global $wgActorTableSchemaMigrationStage; - $page = $this->getTestPage(); $text = __METHOD__; /** @var Revision $rev */ @@ -1895,11 +1890,9 @@ abstract class RevisionStoreDbTestBase extends MediaWikiTestCase { $this->db->update( 'user', [ 'user_name' => $newUserName ], [ 'user_id' => $record->getUser()->getId() ] ); - if ( $wgActorTableSchemaMigrationStage & SCHEMA_COMPAT_WRITE_NEW ) { - $this->db->update( 'actor', - [ 'actor_name' => $newUserName ], - [ 'actor_user' => $record->getUser()->getId() ] ); - } + $this->db->update( 'actor', + [ 'actor_name' => $newUserName ], + [ 'actor_user' => $record->getUser()->getId() ] ); // Reload the record, passing $fromCache as true to force fresh info from the db, // and regrab the user name @@ -2001,23 +1994,17 @@ abstract class RevisionStoreDbTestBase extends MediaWikiTestCase { ) { $page1 = $this->getTestPage(); $text = __METHOD__ . 'b-ä'; + $editStatus = $this->editPage( $page1->getTitle()->getPrefixedDBkey(), $text . '1' ); + $this->assertTrue( $editStatus->isGood(), 'Sanity: must create revision 1' ); /** @var Revision $rev1 */ - $rev1 = $page1->doEditContent( - new WikitextContent( $text . '1' ), - __METHOD__ . 'b', - 0, - false, - $this->getTestUser()->getUser() - )->value['revision']; + $rev1 = $editStatus->getValue()['revision']; + $page2 = $this->getTestPage( $otherPageTitle ); + $editStatus = $this->editPage( $page2->getTitle()->getPrefixedDBkey(), $text . '2' ); + $this->assertTrue( $editStatus->isGood(), 'Sanity: must create revision 2' ); /** @var Revision $rev2 */ - $rev2 = $page2->doEditContent( - new WikitextContent( $text . '2' ), - __METHOD__ . 'b', - 0, - false, - $this->getTestUser()->getUser() - )->value['revision']; + $rev2 = $editStatus->getValue()['revision']; + $store = MediaWikiServices::getInstance()->getRevisionStore(); $result = $store->newRevisionsFromBatch( [ $this->revisionToRow( $rev1 ), $this->revisionToRow( $rev2 ) ], @@ -2025,14 +2012,15 @@ abstract class RevisionStoreDbTestBase extends MediaWikiTestCase { ); $this->assertTrue( $result->isGood() ); $this->assertEmpty( $result->getErrors() ); + /** @var RevisionRecord[] $records */ $records = $result->getValue(); $this->assertRevisionRecordMatchesRevision( $rev1, $records[$rev1->getId()] ); $this->assertRevisionRecordMatchesRevision( $rev2, $records[$rev2->getId()] ); $this->assertSame( $text . '1', - $records[$rev1->getId()]->getContent( SlotRecord::MAIN )->serialize() ); + ContentHandler::getContentText( $records[$rev1->getId()]->getContent( SlotRecord::MAIN ) ) ); $this->assertSame( $text . '2', - $records[$rev2->getId()]->getContent( SlotRecord::MAIN )->serialize() ); + ContentHandler::getContentText( $records[$rev2->getId()]->getContent( SlotRecord::MAIN ) ) ); $this->assertEquals( $page1->getTitle()->getDBkey(), $records[$rev1->getId()]->getPageAsLinkTarget()->getDBkey() ); $this->assertEquals( $page2->getTitle()->getDBkey(), @@ -2055,4 +2043,41 @@ abstract class RevisionStoreDbTestBase extends MediaWikiTestCase { $this->assertEmpty( $result->getValue() ); $this->assertEmpty( $result->getErrors() ); } + + /** + * @covers \MediaWiki\Revision\RevisionStore::newRevisionsFromBatch + */ + public function testNewRevisionsFromBatch_wrongTitle() { + $page1 = $this->getTestPage(); + $text = __METHOD__ . 'b-ä'; + $editStatus = $this->editPage( $page1->getTitle()->getPrefixedDBkey(), $text . '1' ); + $this->assertTrue( $editStatus->isGood(), 'Sanity: must create revision 1' ); + /** @var Revision $rev1 */ + $rev1 = $editStatus->getValue()['revision']; + + $this->setExpectedException( InvalidArgumentException::class ); + MediaWikiServices::getInstance()->getRevisionStore() + ->newRevisionsFromBatch( + [ $this->revisionToRow( $rev1 ) ], + [], + IDBAccessObject::READ_NORMAL, + $this->getTestPage( 'Title_Other_Then_The_One_Revision_Belongs_To' )->getTitle() + ); + } + + /** + * @covers \MediaWiki\Revision\RevisionStore::newRevisionsFromBatch + */ + public function testNewRevisionsFromBatch_DuplicateRows() { + $page1 = $this->getTestPage(); + $text = __METHOD__ . 'b-ä'; + $editStatus = $this->editPage( $page1->getTitle()->getPrefixedDBkey(), $text . '1' ); + $this->assertTrue( $editStatus->isGood(), 'Sanity: must create revision 1' ); + /** @var Revision $rev1 */ + $rev1 = $editStatus->getValue()['revision']; + + $this->setExpectedException( InvalidArgumentException::class ); + MediaWikiServices::getInstance()->getRevisionStore() + ->newRevisionsFromBatch( [ $this->revisionToRow( $rev1 ), $this->revisionToRow( $rev1 ) ] ); + } }