use Content;
use Language;
use LogicException;
+use MediaWiki\Permissions\PermissionManager;
use MediaWiki\Revision\MutableRevisionRecord;
use MediaWiki\Revision\MainSlotRoleHandler;
use MediaWiki\Revision\RevisionRecord;
*/
class RevisionRendererTest extends MediaWikiTestCase {
+ /** @var PermissionManager|\PHPUnit_Framework_MockObject_MockObject $permissionManagerMock */
+ private $permissionManagerMock;
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->permissionManagerMock = $this->createMock( PermissionManager::class );
+ $this->overrideMwServices( null, [
+ 'PermissionManager' => function (): PermissionManager {
+ return $this->permissionManagerMock;
+ }
+ ] );
+ }
+
/**
- * @param $articleId
- * @param $revisionId
+ * @param int $articleId
+ * @param int $revisionId
* @return Title
*/
private function getMockTitle( $articleId, $revisionId ) {
return $mock->getArticleID() === $other->getArticleID();
}
);
- $mock->expects( $this->any() )
+ $this->permissionManagerMock->expects( $this->any() )
->method( 'userCan' )
->willReturnCallback(
- function ( $perm, User $user ) use ( $mock ) {
+ function ( $perm, User $user ) {
return $user->isAllowed( $perm );
}
);
$this->assertSame( $html, $rr->getSlotParserOutput( SlotRecord::MAIN )->getText() );
}
+ public function testGetRenderedRevision_known() {
+ $renderer = $this->newRevisionRenderer( 100, true ); // use master
+ $title = $this->getMockTitle( 7, 21 );
+
+ $rev = new MutableRevisionRecord( $title );
+ $rev->setId( 21 ); // current!
+ $rev->setUser( new UserIdentityValue( 9, 'Frank', 0 ) );
+ $rev->setTimestamp( '20180101000003' );
+ $rev->setComment( CommentStoreComment::newUnsavedComment( '' ) );
+
+ $text = "uncached text";
+ $rev->setContent( SlotRecord::MAIN, new WikitextContent( $text ) );
+
+ $output = new ParserOutput( 'cached text' );
+
+ $options = ParserOptions::newCanonical( 'canonical' );
+ $rr = $renderer->getRenderedRevision(
+ $rev,
+ $options,
+ null,
+ [ 'known-revision-output' => $output ]
+ );
+
+ $this->assertSame( $output, $rr->getRevisionParserOutput() );
+ $this->assertSame( 'cached text', $rr->getRevisionParserOutput()->getText() );
+ $this->assertSame( 'cached text', $rr->getSlotParserOutput( SlotRecord::MAIN )->getText() );
+ }
+
public function testGetRenderedRevision_old() {
$renderer = $this->newRevisionRenderer( 100 );
$title = $this->getMockTitle( 7, 21 );