Merge "(bug 19195) Make user IDs more readily available with the API"
[lhc/web/wiklou.git] / tests / phpunit / includes / cache / GenderCacheTest.php
1 <?php
2
3 /**
4 * @group Database
5 * @group Cache
6 */
7 class GenderCacheTest extends MediaWikiLangTestCase {
8
9 function setUp() {
10 global $wgDefaultUserOptions;
11 parent::setUp();
12 //ensure the correct default gender
13 $wgDefaultUserOptions['gender'] = 'unknown';
14 }
15
16 function addDBData() {
17 $user = User::newFromName( 'UTMale' );
18 if( $user->getID() == 0 ) {
19 $user->addToDatabase();
20 $user->setPassword( 'UTMalePassword' );
21 }
22 //ensure the right gender
23 $user->setOption( 'gender', 'male' );
24 $user->saveSettings();
25
26 $user = User::newFromName( 'UTFemale' );
27 if( $user->getID() == 0 ) {
28 $user->addToDatabase();
29 $user->setPassword( 'UTFemalePassword' );
30 }
31 //ensure the right gender
32 $user->setOption( 'gender', 'female' );
33 $user->saveSettings();
34
35 $user = User::newFromName( 'UTDefaultGender' );
36 if( $user->getID() == 0 ) {
37 $user->addToDatabase();
38 $user->setPassword( 'UTDefaultGenderPassword' );
39 }
40 //ensure the default gender
41 $user->setOption( 'gender', null );
42 $user->saveSettings();
43 }
44
45 /**
46 * test usernames
47 *
48 * @dataProvider dataUserName
49 */
50 function testUserName( $username, $expectedGender ) {
51 $genderCache = GenderCache::singleton();
52 $gender = $genderCache->getGenderOf( $username );
53 $this->assertEquals( $gender, $expectedGender, "GenderCache normal" );
54 }
55
56 /**
57 * genderCache should work with user objects, too
58 *
59 * @dataProvider dataUserName
60 */
61 function testUserObjects( $username, $expectedGender ) {
62 $genderCache = GenderCache::singleton();
63 $user = User::newFromName( $username );
64 $gender = $genderCache->getGenderOf( $user );
65 $this->assertEquals( $gender, $expectedGender, "GenderCache normal" );
66 }
67
68 function dataUserName() {
69 return array(
70 array( 'UTMale', 'male' ),
71 array( 'UTFemale', 'female' ),
72 array( 'UTDefaultGender', 'unknown' ),
73 array( 'UTNotExist', 'unknown' ),
74 //some not valid user
75 array( '127.0.0.1', 'unknown' ),
76 array( 'user@test', 'unknown' ),
77 );
78 }
79
80 /**
81 * test strip of subpages to avoid unnecessary queries
82 * against the never existing username
83 *
84 * @dataProvider dataStripSubpages
85 */
86 function testStripSubpages( $pageWithSubpage, $expectedGender ) {
87 $genderCache = GenderCache::singleton();
88 $gender = $genderCache->getGenderOf( $pageWithSubpage );
89 $this->assertEquals( $gender, $expectedGender, "GenderCache must strip of subpages" );
90 }
91
92 function dataStripSubpages() {
93 return array(
94 array( 'UTMale/subpage', 'male' ),
95 array( 'UTFemale/subpage', 'female' ),
96 array( 'UTDefaultGender/subpage', 'unknown' ),
97 array( 'UTNotExist/subpage', 'unknown' ),
98 array( '127.0.0.1/subpage', 'unknown' ),
99 );
100 }
101 }