Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4112317
GenderCacheTest.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
GenderCacheTest.php
View Options
<?php
use
MediaWiki\Cache\GenderCache
;
/**
* @group Database
* @group Cache
*/
class
GenderCacheTest
extends
MediaWikiLangTestCase
{
/** @var string[] User key => username */
private
static
$nameMap
;
public
function
addDBDataOnce
()
{
// ensure the correct default gender
$this
->
mergeMwGlobalArrayValue
(
'wgDefaultUserOptions'
,
[
'gender'
=>
'unknown'
]
);
$userOptionsManager
=
$this
->
getServiceContainer
()->
getUserOptionsManager
();
$male
=
$this
->
getMutableTestUser
()->
getUser
();
$userOptionsManager
->
setOption
(
$male
,
'gender'
,
'male'
);
$male
->
saveSettings
();
$female
=
$this
->
getMutableTestUser
()->
getUser
();
$userOptionsManager
->
setOption
(
$female
,
'gender'
,
'female'
);
$female
->
saveSettings
();
$default
=
$this
->
getMutableTestUser
()->
getUser
();
$userOptionsManager
->
setOption
(
$default
,
'gender'
,
null
);
$default
->
saveSettings
();
self
::
$nameMap
=
[
'UTMale'
=>
$male
->
getName
(),
'UTFemale'
=>
$female
->
getName
(),
'UTDefaultGender'
=>
$default
->
getName
()
];
}
/**
* test usernames
*
* @dataProvider provideUserGenders
* @covers \MediaWiki\Cache\GenderCache::getGenderOf
*/
public
function
testUserName
(
$userKey
,
$expectedGender
)
{
$genderCache
=
$this
->
getServiceContainer
()->
getGenderCache
();
$username
=
self
::
$nameMap
[
$userKey
]
??
$userKey
;
$gender
=
$genderCache
->
getGenderOf
(
$username
);
$this
->
assertEquals
(
$expectedGender
,
$gender
,
"GenderCache normal"
);
}
/**
* genderCache should work with user objects, too
*
* @dataProvider provideUserGenders
* @covers \MediaWiki\Cache\GenderCache::getGenderOf
*/
public
function
testUserObjects
(
$userKey
,
$expectedGender
)
{
$username
=
self
::
$nameMap
[
$userKey
]
??
$userKey
;
$genderCache
=
$this
->
getServiceContainer
()->
getGenderCache
();
$gender
=
$genderCache
->
getGenderOf
(
$username
);
$this
->
assertEquals
(
$expectedGender
,
$gender
,
"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 \MediaWiki\Cache\GenderCache::getGenderOf
*/
public
function
testStripSubpages
(
$userKey
,
$expectedGender
)
{
$username
=
self
::
$nameMap
[
$userKey
]
??
$userKey
;
$genderCache
=
$this
->
getServiceContainer
()->
getGenderCache
();
$gender
=
$genderCache
->
getGenderOf
(
"$username/subpage"
);
$this
->
assertEquals
(
$expectedGender
,
$gender
,
"GenderCache must strip of subpages"
);
}
/**
* GenderCache must work without database (like Installer)
* @coversNothing
*/
public
function
testWithoutDB
()
{
$this
->
overrideMwServices
();
$services
=
$this
->
getServiceContainer
();
$services
->
disableService
(
'DBLoadBalancer'
);
$services
->
disableService
(
'DBLoadBalancerFactory'
);
// Make sure the disable works
$this
->
assertTrue
(
$services
->
isServiceDisabled
(
'DBLoadBalancer'
)
);
// Test, if it is possible to create the gender cache
$genderCache
=
$services
->
getGenderCache
();
$this
->
assertInstanceOf
(
GenderCache
::
class
,
$genderCache
);
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Tue, Aug 18, 22:48 (9 h, 6 m ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
10/81/3da8ec8f476b255ee4f85ce2e48a
Default Alt Text
GenderCacheTest.php (3 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment