Merge "Add an interface for getting "standard" file metadata."
[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 protected 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 provideUserGenders
49 * @covers GenderCache::getGenderOf
50 */
51 public function testUserName( $username, $expectedGender ) {
52 $genderCache = GenderCache::singleton();
53 $gender = $genderCache->getGenderOf( $username );
54 $this->assertEquals( $gender, $expectedGender, "GenderCache normal" );
55 }
56
57 /**
58 * genderCache should work with user objects, too
59 *
60 * @dataProvider provideUserGenders
61 * @covers GenderCache::getGenderOf
62 */
63 public function testUserObjects( $username, $expectedGender ) {
64 $genderCache = GenderCache::singleton();
65 $user = User::newFromName( $username );
66 $gender = $genderCache->getGenderOf( $user );
67 $this->assertEquals( $gender, $expectedGender, "GenderCache normal" );
68 }
69
70 public static function provideUserGenders() {
71 return array(
72 array( 'UTMale', 'male' ),
73 array( 'UTFemale', 'female' ),
74 array( 'UTDefaultGender', 'unknown' ),
75 array( 'UTNotExist', 'unknown' ),
76 //some not valid user
77 array( '127.0.0.1', 'unknown' ),
78 array( 'user@test', 'unknown' ),
79 );
80 }
81
82 /**
83 * test strip of subpages to avoid unnecessary queries
84 * against the never existing username
85 *
86 * @dataProvider provideStripSubpages
87 * @covers GenderCache::getGenderOf
88 */
89 public function testStripSubpages( $pageWithSubpage, $expectedGender ) {
90 $genderCache = GenderCache::singleton();
91 $gender = $genderCache->getGenderOf( $pageWithSubpage );
92 $this->assertEquals( $gender, $expectedGender, "GenderCache must strip of subpages" );
93 }
94
95 public static function provideStripSubpages() {
96 return array(
97 array( 'UTMale/subpage', 'male' ),
98 array( 'UTFemale/subpage', 'female' ),
99 array( 'UTDefaultGender/subpage', 'unknown' ),
100 array( 'UTNotExist/subpage', 'unknown' ),
101 array( '127.0.0.1/subpage', 'unknown' ),
102 );
103 }
104 }