mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter.git
synced 2024-09-23 10:18:22 +00:00
Merge "Add unit tests for load-first-author method"
This commit is contained in:
commit
76ae26d51e
|
@ -395,6 +395,7 @@ class LazyVariableComputer {
|
|||
}
|
||||
|
||||
/**
|
||||
* @todo Move to MW core (T272050)
|
||||
* @param Title $title
|
||||
* @return string[] Usernames of the last 10 (unique) authors from $title
|
||||
*/
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
|
||||
use MediaWiki\Extension\AbuseFilter\AbuseFilterServices;
|
||||
use MediaWiki\Extension\AbuseFilter\Variables\LazyLoadedVariable;
|
||||
use MediaWiki\Extension\AbuseFilter\Variables\VariableHolder;
|
||||
|
||||
/**
|
||||
|
@ -175,54 +176,24 @@ class LazyVariableComputerDBTest extends MediaWikiIntegrationTestCase {
|
|||
}
|
||||
|
||||
/**
|
||||
* @param string $prefix
|
||||
* @covers ::compute
|
||||
* @covers ::getLastPageAuthors
|
||||
* @dataProvider providePrefix
|
||||
*/
|
||||
public function testRecentContributors( string $prefix ) {
|
||||
$varName = "{$prefix}_recent_contributors";
|
||||
public function testRecentContributors() {
|
||||
$varName = "page_recent_contributors";
|
||||
$pageName = "Page to test $varName";
|
||||
$title = Title::newFromText( $pageName );
|
||||
|
||||
$expected = $this->computeRecentContributors( $title );
|
||||
$generator = AbuseFilterServices::getVariableGeneratorFactory()->newGenerator();
|
||||
$vars = $generator->addTitleVars( $title, $prefix )->getVariableHolder();
|
||||
$manager = AbuseFilterServices::getVariablesManager();
|
||||
$actual = $manager->getVar( $vars, $varName )->toNative();
|
||||
$this->assertSame( $expected, $actual, "Prefix: $prefix" );
|
||||
}
|
||||
|
||||
public function providePrefix() : array {
|
||||
return [
|
||||
'page' => [ 'page' ],
|
||||
'moved_from' => [ 'moved_from' ],
|
||||
'moved_to' => [ 'moved_to' ],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $prefix
|
||||
* @covers ::compute
|
||||
* @dataProvider providePrefix
|
||||
*/
|
||||
public function testFirstContributorVar( string $prefix ) {
|
||||
$varName = "{$prefix}_first_contributor";
|
||||
$title = Title::makeTitle( NS_MAIN, "Page to test $varName" );
|
||||
$user = $this->getMutableTestUser()->getUser();
|
||||
$this->editPage(
|
||||
$title->getText(),
|
||||
'AbuseFilter test for title variables',
|
||||
'',
|
||||
$title->getNamespace(),
|
||||
$user
|
||||
$computer = AbuseFilterServices::getLazyVariableComputer();
|
||||
$var = new LazyLoadedVariable(
|
||||
'load-recent-authors',
|
||||
[ 'title' => $title ]
|
||||
);
|
||||
$expected = $user->getName();
|
||||
|
||||
$generator = AbuseFilterServices::getVariableGeneratorFactory()->newGenerator();
|
||||
$vars = $generator->addTitleVars( $title, $prefix )->getVariableHolder();
|
||||
$manager = AbuseFilterServices::getVariablesManager();
|
||||
$actual = $manager->getVar( $vars, $varName )->toNative();
|
||||
$this->assertSame( $expected, $actual, "Prefix: $prefix" );
|
||||
$forbidComputeCB = function () {
|
||||
throw new LogicException( 'Not expected to be called' );
|
||||
};
|
||||
$actual = $computer->compute( $var, new VariableHolder(), $forbidComputeCB )->toNative();
|
||||
$this->assertSame( $expected, $actual );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,6 +15,7 @@ use MediaWiki\Extension\AbuseFilter\Variables\VariableHolder;
|
|||
use MediaWiki\Revision\RevisionLookup;
|
||||
use MediaWiki\Revision\RevisionRecord;
|
||||
use MediaWiki\Revision\RevisionStore;
|
||||
use MediaWiki\User\UserIdentityValue;
|
||||
use MediaWikiUnitTestCase;
|
||||
use MWTimestamp;
|
||||
use Parser;
|
||||
|
@ -274,6 +275,28 @@ class LazyVariableComputerTest extends MediaWikiUnitTestCase {
|
|||
);
|
||||
yield "*_age" => [ $var, $age, $revLookup ];
|
||||
|
||||
// TODO _first_contributor and _recent_contributors are tested in LazyVariableComputerDBTest
|
||||
$title = $this->createMock( Title::class );
|
||||
$firstRev = $this->createMock( RevisionRecord::class );
|
||||
$firstUserName = 'First author';
|
||||
$firstUser = new UserIdentityValue( 1, $firstUserName, 42 );
|
||||
$firstRev->expects( $this->once() )->method( 'getUser' )->willReturn( $firstUser );
|
||||
$revLookup = $this->createMock( RevisionLookup::class );
|
||||
$revLookup->method( 'getFirstRevision' )->with( $title )->willReturn( $firstRev );
|
||||
$var = new LazyLoadedVariable(
|
||||
'load-first-author',
|
||||
[ 'title' => $title ]
|
||||
);
|
||||
yield '*_first_contributor, with rev' => [ $var, $firstUserName, $revLookup ];
|
||||
|
||||
$title = $this->createMock( Title::class );
|
||||
$revLookup = $this->createMock( RevisionLookup::class );
|
||||
$revLookup->method( 'getFirstRevision' )->with( $title )->willReturn( null );
|
||||
$var = new LazyLoadedVariable(
|
||||
'load-first-author',
|
||||
[ 'title' => $title ]
|
||||
);
|
||||
yield '*_first_contributor, no rev' => [ $var, '', $revLookup ];
|
||||
|
||||
// TODO _recent_contributors is tested in LazyVariableComputerDBTest
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue