tests: clean up requirements tests

Convert to unit tests, no integration needed
Use data providers

Change-Id: Ife758952b6bf8a046eddf4bdc478437564f0bc22
This commit is contained in:
DannyS712 2021-02-26 21:29:45 +00:00
parent 127422e4c6
commit 568dbebd47
2 changed files with 41 additions and 22 deletions

View File

@ -16,41 +16,54 @@
* http://www.gnu.org/copyleft/gpl.html
*
* @file
* @since 1.35
*/
namespace Vector\FeatureManagement\Tests;
use HashConfig;
use User;
use Vector\FeatureManagement\Requirements\LatestSkinVersionRequirement;
use Vector\SkinVersionLookup;
use WebRequest;
/**
* @group Vector
* @group FeatureManagement
* @coversDefaultClass \Vector\FeatureManagement\Requirements\LatestSkinVersionRequirement
*/
class LatestSkinVersionRequirementTest extends \MediaWikiTestCase {
class LatestSkinVersionRequirementTest extends \MediaWikiUnitTestCase {
/**
* @covers ::isMet
*/
public function testUnmet() {
$config = new HashConfig( [ 'VectorDefaultSkinVersionForExistingAccounts' => '1' ] );
$requirement = new LatestSkinVersionRequirement(
new SkinVersionLookup( new WebRequest(), $this->getTestUser()->getUser(), $config )
);
$this->assertFalse( $requirement->isMet(), '"1" isn\'t considered latest.' );
public function provideIsMet() {
// $version, $expected, $msg
yield 'not met' => [ '1', false, '"1" isn\'t considered latest.' ];
yield 'met' => [ '2', true, '"2" is considered latest.' ];
}
/**
* @dataProvider provideIsMet
* @covers ::isMet
*/
public function testMet() {
$config = new HashConfig( [ 'VectorDefaultSkinVersionForExistingAccounts' => '2' ] );
public function testIsMet( $version, $expected, $msg ) {
$config = new HashConfig( [ 'VectorDefaultSkinVersionForExistingAccounts' => $version ] );
$user = $this->createMock( User::class );
$user->method( 'isRegistered' )->willReturn( true );
$user->method( 'getOption' )
->will( $this->returnArgument( 1 ) );
$request = $this->createMock( WebRequest::class );
$request->method( 'getVal' )
->will( $this->returnArgument( 1 ) );
$requirement = new LatestSkinVersionRequirement(
new SkinVersionLookup( new WebRequest(), $this->getTestUser()->getUser(), $config )
new SkinVersionLookup(
$request,
$user,
$config
)
);
$this->assertTrue( $requirement->isMet(), '"2" is considered latest.' );
$this->assertSame( $expected, $requirement->isMet(), $msg );
}
}

View File

@ -16,17 +16,21 @@
* http://www.gnu.org/copyleft/gpl.html
*
* @file
* @since 1.36
*/
namespace Vector\FeatureManagement\Tests;
use HashConfig;
use User;
use Vector\Constants;
use Vector\FeatureManagement\Requirements\WvuiSearchTreatmentRequirement;
/**
* @group Vector
* @group FeatureManagement
* @coversDefaultClass \Vector\FeatureManagement\Requirements\WvuiSearchTreatmentRequirement
*/
class WvuiSearchTreatmentRequirementTest extends \MediaWikiTestCase {
class WvuiSearchTreatmentRequirementTest extends \MediaWikiUnitTestCase {
public function providerWvuiSearchTreatmentRequirement() {
return [
@ -115,13 +119,15 @@ class WvuiSearchTreatmentRequirementTest extends \MediaWikiTestCase {
Constants::CONFIG_KEY_USE_WVUI_SEARCH => $wvuiSearchConfigValue,
Constants::CONFIG_SEARCH_TREATMENT_AB_TEST => $abValue,
] );
$user = $this->getTestUser()->getUser();
$user->setId( $userId );
$user = $this->createMock( User::class );
$user->method( 'isRegistered' )->willReturn( $userId !== 0 );
$user->method( 'getID' )->willReturn( $userId );
$requirement = new WvuiSearchTreatmentRequirement(
$config, $user
);
$this->assertSame( $requirement->isMet(), $expected, $msg );
$this->assertSame( $expected, $requirement->isMet(), $msg );
}
}