From 63601400e476c6cf43d985f3e7b9864681695ed4 Mon Sep 17 00:00:00 2001
From: Pierre Schmitz <pierre@archlinux.de>
Date: Fri, 18 Jan 2013 16:46:04 +0100
Subject: Update to MediaWiki 1.20.2

this update includes:
* adjusted Arch Linux skin
* updated FluxBBAuthPlugin
* patch for https://bugzilla.wikimedia.org/show_bug.cgi?id=44024
---
 tests/phpunit/includes/cache/GenderCacheTest.php | 101 +++++++++++++++++++++++
 1 file changed, 101 insertions(+)
 create mode 100644 tests/phpunit/includes/cache/GenderCacheTest.php

(limited to 'tests/phpunit/includes/cache/GenderCacheTest.php')

diff --git a/tests/phpunit/includes/cache/GenderCacheTest.php b/tests/phpunit/includes/cache/GenderCacheTest.php
new file mode 100644
index 00000000..a8b987e2
--- /dev/null
+++ b/tests/phpunit/includes/cache/GenderCacheTest.php
@@ -0,0 +1,101 @@
+<?php
+
+/**
+ * @group Database
+ * @group Cache
+ */
+class GenderCacheTest extends MediaWikiLangTestCase {
+
+	function setUp() {
+		global $wgDefaultUserOptions;
+		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' ),
+		);
+	}
+}
-- 
cgit v1.2.3-54-g00ecf