1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
<?php
use MediaWiki\Context\RequestContext;
use MediaWiki\Page\PageIdentity;
use MediaWiki\Page\PageIdentityValue;
use MediaWiki\RevisionList\RevisionItem;
use MediaWiki\RevisionList\RevisionList;
/**
* @covers \MediaWiki\RevisionList\RevisionList
* @covers \MediaWiki\RevisionList\RevisionListBase
* @covers \MediaWiki\RevisionList\RevisionItem
* @covers \MediaWiki\RevisionList\RevisionItemBase
* @group Database
*
* @author DannyS712
*/
class RevisionListTest extends MediaWikiIntegrationTestCase {
public function testGetType() {
$context = new RequestContext();
$page = new PageIdentityValue( 123, NS_MAIN, __METHOD__, PageIdentity::LOCAL );
$revisionList = new RevisionList( $context, $page );
$this->assertSame(
'revision',
$revisionList->getType()
);
}
public function testNewItem() {
// Need a row that is valid for RevisionFactory::newRevisionFromRow
$wikiPage = $this->getExistingTestPage( __METHOD__ );
$currentRevId = $wikiPage->getRevisionRecord()->getId();
$queryBuilder = $this->getServiceContainer()->getRevisionStore()->newSelectQueryBuilder( $this->getDb() )
->joinComment()
->joinPage()
->joinUser()
->where( [ 'rev_id' => $currentRevId ] );
$row = $queryBuilder->caller( __METHOD__ )->fetchRow();
$context = new RequestContext();
$context->setUser( $this->getTestSysop()->getUser() );
$page = new PageIdentityValue( 123, NS_MAIN, __METHOD__, PageIdentity::LOCAL );
$revisionList = new RevisionList( $context, $page );
$revisionItem = $revisionList->newItem( $row );
$this->assertInstanceOf( RevisionItem::class, $revisionItem );
// Tests for RevisionItem getters
$this->assertSame( 'rev_id', $revisionItem->getIdField() );
$this->assertSame( 'rev_timestamp', $revisionItem->getTimestampField() );
$this->assertSame( 'rev_user', $revisionItem->getAuthorIdField() );
$this->assertSame( 'rev_user_text', $revisionItem->getAuthorNameField() );
// Tests for RevisionItemBase getters that are not overridden
$this->assertSame( $currentRevId, $revisionItem->getId() );
$this->assertSame( intval( $row->rev_user ), $revisionItem->getAuthorId() );
$this->assertSame( strval( $row->rev_user_text ), $revisionItem->getAuthorName() );
$this->assertSame(
wfTimestamp( TS_MW, $row->rev_timestamp ),
$revisionItem->getTimestamp()
);
// Text of the latest revision cannot be deleted, so it is always viewable
$this->assertTrue( $revisionItem->canView() );
$this->assertTrue( $revisionItem->canViewContent() );
$this->assertFalse( $revisionItem->isDeleted() );
}
}
|