Remove a remaining use of Revision objects

Remove use of Title::getFirstRevision and Revision::getUserText

Bug: T249393
Bug: T250579
Change-Id: I0f77b124a0c7de1dec6baf4c997e0997ecdd55f8
This commit is contained in:
DannyS712 2020-04-14 21:54:02 +00:00
parent d49d44681f
commit 1b65bd1862
3 changed files with 49 additions and 14 deletions

View file

@ -378,9 +378,10 @@ class AFComputedVariable {
case 'load-first-author':
$title = $this->buildTitle( $parameters['namespace'], $parameters['title'] );
$revision = $title->getFirstRevision();
$revision = $services->getRevisionLookup()->getFirstRevision( $title );
if ( $revision ) {
$result = $revision->getUserText();
$user = $revision->getUser();
$result = $user === null ? '' : $user->getName();
} else {
$result = '';
}

View file

@ -2,8 +2,10 @@
use MediaWiki\Extension\AbuseFilter\VariableGenerator\VariableGenerator;
use MediaWiki\Revision\MutableRevisionRecord;
use MediaWiki\Revision\RevisionLookup;
use MediaWiki\Revision\RevisionRecord;
use MediaWiki\Revision\SlotRecord;
use MediaWiki\User\UserIdentityValue;
use PHPUnit\Framework\MockObject\MockObject;
/**
@ -465,6 +467,49 @@ class AbuseFilterDBTest extends MediaWikiTestCase {
];
}
/**
* Test for the page_first_contributor variable.
*
* @covers AbuseFilter::generateGenericVars
* @covers AFComputedVariable::compute
*/
public function testFirstContributorVar() {
$username = 'foobar';
$fakeUser = $this->getMockBuilder( UserIdentityValue::class )
->disableOriginalConstructor()
->setMethods( [ 'getName' ] )
->getMock();
$fakeUser->method( 'getName' )->willReturn( $username );
$fakeRevRecord = $this->getMockBuilder( RevisionRecord::class )
->disableOriginalConstructor()
->setMethods( [ 'getUser' ] )
->getMockForAbstractClass();
$fakeRevRecord->method( 'getUser' )->willReturn( $fakeUser );
$fakeRevLookup = $this->getMockBuilder( RevisionLookup::class )
->setMethods( [ 'getFirstRevision' ] )
->getMockForAbstractClass();
$fakeRevLookup->method( 'getFirstRevision' )->willReturn( $fakeRevRecord );
$this->setService( 'RevisionLookup', $fakeRevLookup );
$vars = new AbuseFilterVariableHolder();
$vars->setLazyLoadVar(
'page_first_contributor',
'load-first-author',
[
'namespace' => 0,
'title' => 'pageName',
]
);
$this->assertSame(
$username,
$vars->getVar( 'page_first_contributor' )->toNative()
);
}
/**
* Test for the wiki_name variable.
*

View file

@ -197,17 +197,7 @@ class AbuseFilterTest extends MediaWikiUnitTestCase {
$title = $this->getTitleWithMockedMethod( 'getRestrictions', $result );
break;
// case '_recent_contributors' handled in AbuseFilterDBTest
case '_first_contributor':
$result = 'Fake username';
$revision = $this->getMockBuilder( Revision::class )
->disableOriginalConstructor()
->setMethods( [ 'getUserText' ] )
->getMock();
$revision->expects( $this->atLeastOnce() )
->method( 'getUserText' )
->willReturn( $result );
$title = $this->getTitleWithMockedMethod( 'getFirstRevision', $revision );
break;
// case '_first_contributor' is handled in AbuseFilterDBTest
case '_age':
$result = 123;
MWTimestamp::setFakeTime( self::FAKE_TIME );
@ -274,7 +264,6 @@ class AbuseFilterTest extends MediaWikiUnitTestCase {
'_restrictions_edit',
'_restrictions_move',
'_restrictions_upload',
'_first_contributor',
'_age'
];
foreach ( $prefixes as $prefix ) {