wiki.techinc.nl/tests/phpunit/includes/cache/GenderCacheTest.php
Bartosz Dziewoński 485f66f174 Use PHP 7 '??' operator instead of '?:' with 'isset()' where convenient
Find: /isset\(\s*([^()]+?)\s*\)\s*\?\s*\1\s*:\s*/
Replace with: '\1 ?? '

(Everywhere except includes/PHPVersionCheck.php)
(Then, manually fix some line length and indentation issues)

Then manually reviewed the replacements for cases where confusing
operator precedence would result in incorrect results
(fixing those in I478db046a1cc162c6767003ce45c9b56270f3372).

Change-Id: I33b421c8cb11cdd4ce896488c9ff5313f03a38cf
2018-05-30 18:06:13 -07:00

87 lines
2.5 KiB
PHP

<?php
use MediaWiki\MediaWikiServices;
/**
* @group Database
* @group Cache
*/
class GenderCacheTest extends MediaWikiLangTestCase {
/** @var string[] User key => username */
private static $nameMap;
function addDBDataOnce() {
// ensure the correct default gender
$this->mergeMwGlobalArrayValue( 'wgDefaultUserOptions', [ 'gender' => 'unknown' ] );
$male = $this->getMutableTestUser()->getUser();
$male->setOption( 'gender', 'male' );
$male->saveSettings();
$female = $this->getMutableTestUser()->getUser();
$female->setOption( 'gender', 'female' );
$female->saveSettings();
$default = $this->getMutableTestUser()->getUser();
$default->setOption( 'gender', null );
$default->saveSettings();
self::$nameMap = [
'UTMale' => $male->getName(),
'UTFemale' => $female->getName(),
'UTDefaultGender' => $default->getName()
];
}
/**
* test usernames
*
* @dataProvider provideUserGenders
* @covers GenderCache::getGenderOf
*/
public function testUserName( $userKey, $expectedGender ) {
$genderCache = MediaWikiServices::getInstance()->getGenderCache();
$username = self::$nameMap[$userKey] ?? $userKey;
$gender = $genderCache->getGenderOf( $username );
$this->assertEquals( $gender, $expectedGender, "GenderCache normal" );
}
/**
* genderCache should work with user objects, too
*
* @dataProvider provideUserGenders
* @covers GenderCache::getGenderOf
*/
public function testUserObjects( $userKey, $expectedGender ) {
$username = self::$nameMap[$userKey] ?? $userKey;
$genderCache = MediaWikiServices::getInstance()->getGenderCache();
$gender = $genderCache->getGenderOf( $username );
$this->assertEquals( $gender, $expectedGender, "GenderCache normal" );
}
public static function provideUserGenders() {
return [
[ 'UTMale', 'male' ],
[ 'UTFemale', 'female' ],
[ 'UTDefaultGender', 'unknown' ],
[ 'UTNotExist', 'unknown' ],
// some not valid user
[ '127.0.0.1', 'unknown' ],
[ 'user@test', 'unknown' ],
];
}
/**
* test strip of subpages to avoid unnecessary queries
* against the never existing username
*
* @dataProvider provideUserGenders
* @covers GenderCache::getGenderOf
*/
public function testStripSubpages( $userKey, $expectedGender ) {
$username = self::$nameMap[$userKey] ?? $userKey;
$genderCache = MediaWikiServices::getInstance()->getGenderCache();
$gender = $genderCache->getGenderOf( "$username/subpage" );
$this->assertEquals( $gender, $expectedGender, "GenderCache must strip of subpages" );
}
}