wiki.techinc.nl/tests/phpunit/includes/cache/GenderCacheTest.php
umherirrender 4989ddd423 strip off subpages direct in GenderCache
LinkBatch can also give subpages to the GenderCache and therefor it is
easier to do it always in GenderCache, than in LinkBatch and Title

Add unit tests for GenderCache

Change-Id: Ia936ff8bb639a197b0b3a8e07c97a66edd57dd10
2012-04-21 10:34:22 +02:00

100 lines
2.7 KiB
PHP

<?php
/**
* @group Database
* @group Cache
*/
class GenderCacheTest extends MediaWikiLangTestCase {
function setUp() {
parent::setUp();
//ensure the correct default gender
$wgDefaultUserOptions['gender'] = 'unknown';
}
function addDBData() {
$user = User::newFromName( 'UTMale' );
if( $user->getID() == 0 ) {
$user->addToDatabase();
$user->setPassword( 'UTMalePassword' );
}
//ensure the right gender
$user->setOption( 'gender', 'male' );
$user->saveSettings();
$user = User::newFromName( 'UTFemale' );
if( $user->getID() == 0 ) {
$user->addToDatabase();
$user->setPassword( 'UTFemalePassword' );
}
//ensure the right gender
$user->setOption( 'gender', 'female' );
$user->saveSettings();
$user = User::newFromName( 'UTDefaultGender' );
if( $user->getID() == 0 ) {
$user->addToDatabase();
$user->setPassword( 'UTDefaultGenderPassword' );
}
//ensure the default gender
$user->setOption( 'gender', null );
$user->saveSettings();
}
/**
* test usernames
*
* @dataProvider dataUserName
*/
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 dataUserName
*/
function testUserObjects( $username, $expectedGender ) {
$genderCache = GenderCache::singleton();
$user = User::newFromName( $username );
$gender = $genderCache->getGenderOf( $user );
$this->assertEquals( $gender, $expectedGender, "GenderCache normal" );
}
function dataUserName() {
return array(
array( 'UTMale', 'male' ),
array( 'UTFemale', 'female' ),
array( 'UTDefaultGender', 'unknown' ),
array( 'UTNotExist', 'unknown' ),
//some not valid user
array( '127.0.0.1', 'unknown' ),
array( 'user@test', 'unknown' ),
);
}
/**
* test strip of subpages to avoid unnecessary queries
* against the never existing username
*
* @dataProvider dataStripSubpages
*/
function testStripSubpages( $pageWithSubpage, $expectedGender ) {
$genderCache = GenderCache::singleton();
$gender = $genderCache->getGenderOf( $pageWithSubpage );
$this->assertEquals( $gender, $expectedGender, "GenderCache must strip of subpages" );
}
function dataStripSubpages() {
return array(
array( 'UTMale/subpage', 'male' ),
array( 'UTFemale/subpage', 'female' ),
array( 'UTDefaultGender/subpage', 'unknown' ),
array( 'UTNotExist/subpage', 'unknown' ),
array( '127.0.0.1/subpage', 'unknown' ),
);
}
}