X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2FRevision%2FMcrRevisionStoreDbTest.php;h=e4d6b541054fc593898c4f4be6a0c426de64ed13;hb=bb915b0776c656b89ed5c14352ff92dfb07ce8f2;hp=c0ff44b0b883646535fde40ae490ab064b40e41d;hpb=e3e33ce99c909103b4b2b861c8361729441eccc8;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/Revision/McrRevisionStoreDbTest.php b/tests/phpunit/includes/Revision/McrRevisionStoreDbTest.php index c0ff44b0b8..e4d6b54105 100644 --- a/tests/phpunit/includes/Revision/McrRevisionStoreDbTest.php +++ b/tests/phpunit/includes/Revision/McrRevisionStoreDbTest.php @@ -3,12 +3,17 @@ namespace MediaWiki\Tests\Revision; use CommentStoreComment; +use ContentHandler; use MediaWiki\MediaWikiServices; use MediaWiki\Revision\MutableRevisionRecord; use MediaWiki\Revision\RevisionRecord; use MediaWiki\Revision\SlotRecord; +use MediaWiki\Storage\SqlBlobStore; +use Revision; +use StatusValue; use TextContent; use Title; +use Wikimedia\TestingAccessWrapper; use WikitextContent; /** @@ -239,4 +244,49 @@ class McrRevisionStoreDbTest extends RevisionStoreDbTestBase { ] ] ], $result->getErrors() ); } + + /** + * @covers \MediaWiki\Revision\RevisionStore::newRevisionsFromBatch + */ + public function testNewRevisionFromBatchUsesGetBlobBatch() { + $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']; + + $contentAddress = $rev1->getRevisionRecord()->getSlot( SlotRecord::MAIN )->getAddress(); + $mockBlobStore = $this->getMockBuilder( SqlBlobStore::class ) + ->disableOriginalConstructor() + ->getMock(); + $mockBlobStore + ->expects( $this->once() ) + ->method( 'getBlobBatch' ) + ->with( [ $contentAddress ], $this->anything() ) + ->willReturn( StatusValue::newGood( [ + $contentAddress => 'Content_From_Mock' + ] ) ); + $mockBlobStore + ->expects( $this->never() ) + ->method( 'getBlob' ); + + $revStore = MediaWikiServices::getInstance() + ->getRevisionStoreFactory() + ->getRevisionStore(); + $wrappedRevStore = TestingAccessWrapper::newFromObject( $revStore ); + $wrappedRevStore->blobStore = $mockBlobStore; + + $result = $revStore->newRevisionsFromBatch( + [ $this->revisionToRow( $rev1 ) ], + [ + 'slots' => [ SlotRecord::MAIN ], + 'content' => true + ] + ); + $this->assertTrue( $result->isGood() ); + $this->assertSame( 'Content_From_Mock', + ContentHandler::getContentText( $result->getValue()[$rev1->getId()] + ->getContent( SlotRecord::MAIN ) ) ); + } }