diff options
Diffstat (limited to 'www/wiki/tests/phpunit/includes/AutopromoteTest.php')
-rw-r--r-- | www/wiki/tests/phpunit/includes/AutopromoteTest.php | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/www/wiki/tests/phpunit/includes/AutopromoteTest.php b/www/wiki/tests/phpunit/includes/AutopromoteTest.php new file mode 100644 index 00000000..8c4a488e --- /dev/null +++ b/www/wiki/tests/phpunit/includes/AutopromoteTest.php @@ -0,0 +1,56 @@ +<?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 ], + ]; + } +} |