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