wiki.techinc.nl/tests/phpunit/includes/cache/GenderCacheTest.php
Reedy 1834ee3d8e Fix numerous class/function casing
Change-Id: I23982bfa0548c9ea3bdb432be7982f1563930715
2016-03-18 23:14:49 +00:00

100 lines
2.7 KiB
PHP

<?php
/**
* @group Database
* @group Cache
*/
class GenderCacheTest extends MediaWikiLangTestCase {
function addDBDataOnce() {
// ensure the correct default gender
$this->mergeMwGlobalArrayValue( 'wgDefaultUserOptions', [ 'gender' => 'unknown' ] );
$user = User::newFromName( 'UTMale' );
if ( $user->getId() == 0 ) {
$user->addToDatabase();
TestUser::setPasswordForUser( $user, 'UTMalePassword' );
}
// ensure the right gender
$user->setOption( 'gender', 'male' );
$user->saveSettings();
$user = User::newFromName( 'UTFemale' );
if ( $user->getId() == 0 ) {
$user->addToDatabase();
TestUser::setPasswordForUser( $user, 'UTFemalePassword' );
}
// ensure the right gender
$user->setOption( 'gender', 'female' );
$user->saveSettings();
$user = User::newFromName( 'UTDefaultGender' );
if ( $user->getId() == 0 ) {
$user->addToDatabase();
TestUser::setPasswordForUser( $user, 'UTDefaultGenderPassword' );
}
// ensure the default gender
$user->setOption( 'gender', null );
$user->saveSettings();
}
/**
* test usernames
*
* @dataProvider provideUserGenders
* @covers GenderCache::getGenderOf
*/
public function testUserName( $username, $expectedGender ) {
$genderCache = GenderCache::singleton();
$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( $username, $expectedGender ) {
$genderCache = GenderCache::singleton();
$user = User::newFromName( $username );
$gender = $genderCache->getGenderOf( $user );
$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 provideStripSubpages
* @covers GenderCache::getGenderOf
*/
public function testStripSubpages( $pageWithSubpage, $expectedGender ) {
$genderCache = GenderCache::singleton();
$gender = $genderCache->getGenderOf( $pageWithSubpage );
$this->assertEquals( $gender, $expectedGender, "GenderCache must strip of subpages" );
}
public static function provideStripSubpages() {
return [
[ 'UTMale/subpage', 'male' ],
[ 'UTFemale/subpage', 'female' ],
[ 'UTDefaultGender/subpage', 'unknown' ],
[ 'UTNotExist/subpage', 'unknown' ],
[ '127.0.0.1/subpage', 'unknown' ],
];
}
}