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 ], ]; } }