123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- <?php
- /**
- * @covers Autopromote
- */
- class AutopromoteTest extends MediaWikiTestCase {
- /**
- * T157718: Verify Autopromote does not perform edit count lookup if requirement is 0 or invalid
- *
- * @see Autopromote::getAutopromoteGroups()
- * @dataProvider provideEditCountsAndRequirements
- * @param int $editCount edit count of user to be checked by Autopromote
- * @param int $requirement edit count required to autopromote user
- */
- public function testEditCountLookupIsSkippedIfRequirementIsZero( $editCount, $requirement ) {
- $this->setMwGlobals( [
- 'wgAutopromote' => [
- 'autoconfirmed' => [ APCOND_EDITCOUNT, $requirement ]
- ]
- ] );
- /** @var PHPUnit_Framework_MockObject_MockObject|User $userMock */
- $userMock = $this->getMock( User::class, [ 'getEditCount' ] );
- if ( $requirement > 0 ) {
- $userMock->expects( $this->once() )
- ->method( 'getEditCount' )
- ->willReturn( $editCount );
- } else {
- $userMock->expects( $this->never() )
- ->method( 'getEditCount' );
- }
- $result = Autopromote::getAutopromoteGroups( $userMock );
- if ( $editCount >= $requirement ) {
- $this->assertContains(
- 'autoconfirmed',
- $result,
- 'User must be promoted if they meet edit count requirement'
- );
- } else {
- $this->assertNotContains(
- 'autoconfirmed',
- $result,
- 'User must not be promoted if they fail edit count requirement'
- );
- }
- }
- public static function provideEditCountsAndRequirements() {
- return [
- 'user with sufficient editcount' => [ 100, 10 ],
- 'user with insufficient editcount' => [ 4, 10 ],
- 'edit count requirement set to 0' => [ 1, 0 ],
- ];
- }
- }
|