2012-04-28 15:18:22 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @group Database
|
|
|
|
|
* @group Cache
|
|
|
|
|
*/
|
|
|
|
|
class GenderCacheTest extends MediaWikiLangTestCase {
|
|
|
|
|
|
2014-11-06 20:03:21 +00:00
|
|
|
function addDBData() {
|
2015-09-11 13:44:59 +00:00
|
|
|
// ensure the correct default gender
|
2016-02-17 09:09:32 +00:00
|
|
|
$this->mergeMwGlobalArrayValue( 'wgDefaultUserOptions', [ 'gender' => 'unknown' ] );
|
2012-04-28 15:18:22 +00:00
|
|
|
|
|
|
|
|
$user = User::newFromName( 'UTMale' );
|
2013-02-14 13:10:38 +00:00
|
|
|
if ( $user->getID() == 0 ) {
|
2012-04-28 15:18:22 +00:00
|
|
|
$user->addToDatabase();
|
2015-09-04 16:17:42 +00:00
|
|
|
TestUser::setPasswordForUser( $user, 'UTMalePassword' );
|
2012-04-28 15:18:22 +00:00
|
|
|
}
|
2015-09-11 13:44:59 +00:00
|
|
|
// ensure the right gender
|
2012-04-28 15:18:22 +00:00
|
|
|
$user->setOption( 'gender', 'male' );
|
|
|
|
|
$user->saveSettings();
|
|
|
|
|
|
|
|
|
|
$user = User::newFromName( 'UTFemale' );
|
2013-02-14 13:10:38 +00:00
|
|
|
if ( $user->getID() == 0 ) {
|
2012-04-28 15:18:22 +00:00
|
|
|
$user->addToDatabase();
|
2015-09-04 16:17:42 +00:00
|
|
|
TestUser::setPasswordForUser( $user, 'UTFemalePassword' );
|
2012-04-28 15:18:22 +00:00
|
|
|
}
|
2015-09-11 13:44:59 +00:00
|
|
|
// ensure the right gender
|
2012-04-28 15:18:22 +00:00
|
|
|
$user->setOption( 'gender', 'female' );
|
|
|
|
|
$user->saveSettings();
|
|
|
|
|
|
|
|
|
|
$user = User::newFromName( 'UTDefaultGender' );
|
2013-02-14 13:10:38 +00:00
|
|
|
if ( $user->getID() == 0 ) {
|
2012-04-28 15:18:22 +00:00
|
|
|
$user->addToDatabase();
|
2015-09-04 16:17:42 +00:00
|
|
|
TestUser::setPasswordForUser( $user, 'UTDefaultGenderPassword' );
|
2012-04-28 15:18:22 +00:00
|
|
|
}
|
2015-09-11 13:44:59 +00:00
|
|
|
// ensure the default gender
|
2012-04-28 15:18:22 +00:00
|
|
|
$user->setOption( 'gender', null );
|
|
|
|
|
$user->saveSettings();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* test usernames
|
|
|
|
|
*
|
2012-10-08 10:56:20 +00:00
|
|
|
* @dataProvider provideUserGenders
|
2013-10-18 11:06:08 +00:00
|
|
|
* @covers GenderCache::getGenderOf
|
2012-04-28 15:18:22 +00:00
|
|
|
*/
|
2013-10-23 22:51:31 +00:00
|
|
|
public function testUserName( $username, $expectedGender ) {
|
2012-04-28 15:18:22 +00:00
|
|
|
$genderCache = GenderCache::singleton();
|
|
|
|
|
$gender = $genderCache->getGenderOf( $username );
|
|
|
|
|
$this->assertEquals( $gender, $expectedGender, "GenderCache normal" );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* genderCache should work with user objects, too
|
|
|
|
|
*
|
2012-10-08 10:56:20 +00:00
|
|
|
* @dataProvider provideUserGenders
|
2013-10-18 11:06:08 +00:00
|
|
|
* @covers GenderCache::getGenderOf
|
2012-04-28 15:18:22 +00:00
|
|
|
*/
|
2013-10-23 22:51:31 +00:00
|
|
|
public function testUserObjects( $username, $expectedGender ) {
|
2012-04-28 15:18:22 +00:00
|
|
|
$genderCache = GenderCache::singleton();
|
|
|
|
|
$user = User::newFromName( $username );
|
|
|
|
|
$gender = $genderCache->getGenderOf( $user );
|
|
|
|
|
$this->assertEquals( $gender, $expectedGender, "GenderCache normal" );
|
|
|
|
|
}
|
|
|
|
|
|
2012-10-08 10:56:20 +00:00
|
|
|
public static function provideUserGenders() {
|
2016-02-17 09:09:32 +00:00
|
|
|
return [
|
|
|
|
|
[ 'UTMale', 'male' ],
|
|
|
|
|
[ 'UTFemale', 'female' ],
|
|
|
|
|
[ 'UTDefaultGender', 'unknown' ],
|
|
|
|
|
[ 'UTNotExist', 'unknown' ],
|
2015-09-11 13:44:59 +00:00
|
|
|
// some not valid user
|
2016-02-17 09:09:32 +00:00
|
|
|
[ '127.0.0.1', 'unknown' ],
|
|
|
|
|
[ 'user@test', 'unknown' ],
|
|
|
|
|
];
|
2012-04-28 15:18:22 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* test strip of subpages to avoid unnecessary queries
|
|
|
|
|
* against the never existing username
|
|
|
|
|
*
|
2012-10-08 10:56:20 +00:00
|
|
|
* @dataProvider provideStripSubpages
|
2013-10-18 11:06:08 +00:00
|
|
|
* @covers GenderCache::getGenderOf
|
2012-04-28 15:18:22 +00:00
|
|
|
*/
|
2013-10-23 22:51:31 +00:00
|
|
|
public function testStripSubpages( $pageWithSubpage, $expectedGender ) {
|
2012-04-28 15:18:22 +00:00
|
|
|
$genderCache = GenderCache::singleton();
|
|
|
|
|
$gender = $genderCache->getGenderOf( $pageWithSubpage );
|
|
|
|
|
$this->assertEquals( $gender, $expectedGender, "GenderCache must strip of subpages" );
|
|
|
|
|
}
|
|
|
|
|
|
2012-10-08 10:56:20 +00:00
|
|
|
public static function provideStripSubpages() {
|
2016-02-17 09:09:32 +00:00
|
|
|
return [
|
|
|
|
|
[ 'UTMale/subpage', 'male' ],
|
|
|
|
|
[ 'UTFemale/subpage', 'female' ],
|
|
|
|
|
[ 'UTDefaultGender/subpage', 'unknown' ],
|
|
|
|
|
[ 'UTNotExist/subpage', 'unknown' ],
|
|
|
|
|
[ '127.0.0.1/subpage', 'unknown' ],
|
|
|
|
|
];
|
2012-04-28 15:18:22 +00:00
|
|
|
}
|
|
|
|
|
}
|