From 9498a3d2852ace0f4ee23598f542dbce3fd2ec28 Mon Sep 17 00:00:00 2001
From: Pierre Schmitz <pierre@archlinux.de>
Date: Sun, 2 Sep 2012 15:19:34 +0200
Subject: Update to MediaWiki 1.19.2

---
 tests/phpunit/includes/db/DatabaseTest.php | 92 ++++++++++++++++++++++++++++++
 1 file changed, 92 insertions(+)

(limited to 'tests/phpunit/includes')

diff --git a/tests/phpunit/includes/db/DatabaseTest.php b/tests/phpunit/includes/db/DatabaseTest.php
index 672e6645..379ffb17 100644
--- a/tests/phpunit/includes/db/DatabaseTest.php
+++ b/tests/phpunit/includes/db/DatabaseTest.php
@@ -57,6 +57,98 @@ class DatabaseTest extends MediaWikiTestCase {
 			$this->db->addQuotes( "string's cause trouble" ) );
 	}
 
+	private function getSharedTableName( $table, $database, $prefix, $format = 'quoted' ) {
+		global $wgSharedDB, $wgSharedTables, $wgSharedPrefix;
+
+		$oldName = $wgSharedDB;
+		$oldTables = $wgSharedTables;
+		$oldPrefix = $wgSharedPrefix;
+
+		$wgSharedDB = $database;
+		$wgSharedTables = array( $table );
+		$wgSharedPrefix = $prefix;
+
+		$ret = $this->db->tableName( $table, $format );
+
+		$wgSharedDB = $oldName;
+		$wgSharedTables = $oldTables;
+		$wgSharedPrefix = $oldPrefix;
+
+		return $ret;
+	}
+
+	private function prefixAndQuote( $table, $database = null, $prefix = null, $format = 'quoted' ) {
+		if ( $this->db->getType() === 'sqlite' || $format !== 'quoted' ) {
+			$quote = '';
+		} elseif ( $this->db->getType() === 'mysql' ) {
+			$quote = '`';
+		} else {
+			$quote = '"';
+		}
+
+		if ( $database !== null ) {
+			$database = $quote . $database . $quote . '.';
+		}
+
+		if ( $prefix === null ) {
+			$prefix = $this->dbPrefix();
+		}
+
+		return $database . $quote . $prefix . $table . $quote;
+	}
+
+	function testTableNameLocal() {
+		$this->assertEquals(
+			$this->prefixAndQuote( 'tablename' ),
+			$this->db->tableName( 'tablename' )
+		);
+	}
+
+	function testTableNameRawLocal() {
+		$this->assertEquals(
+			$this->prefixAndQuote( 'tablename', null, null, 'raw' ),
+			$this->db->tableName( 'tablename', 'raw' )
+		);
+	}
+
+	function testTableNameShared() {
+		$this->assertEquals(
+			$this->prefixAndQuote( 'tablename', 'sharedatabase', 'sh_' ),
+			$this->getSharedTableName( 'tablename', 'sharedatabase', 'sh_' )
+		);
+
+		$this->assertEquals(
+			$this->prefixAndQuote( 'tablename', 'sharedatabase', null ),
+			$this->getSharedTableName( 'tablename', 'sharedatabase', null )
+		);
+	}
+
+	function testTableNameRawShared() {
+		$this->assertEquals(
+			$this->prefixAndQuote( 'tablename', 'sharedatabase', 'sh_', 'raw' ),
+			$this->getSharedTableName( 'tablename', 'sharedatabase', 'sh_', 'raw' )
+		);
+
+		$this->assertEquals(
+			$this->prefixAndQuote( 'tablename', 'sharedatabase', null, 'raw' ),
+			$this->getSharedTableName( 'tablename', 'sharedatabase', null, 'raw' )
+		);
+	}
+
+	function testTableNameForeign() {
+		$this->assertEquals(
+			$this->prefixAndQuote( 'tablename', 'databasename', '' ),
+			$this->db->tableName( 'databasename.tablename' )
+		);
+	}
+
+	function testTableNameRawForeign() {
+		$this->assertEquals(
+			$this->prefixAndQuote( 'tablename', 'databasename', '', 'raw' ),
+			$this->db->tableName( 'databasename.tablename', 'raw' )
+		);
+	}
+
 	function testFillPreparedEmpty() {
 		$sql = $this->db->fillPrepared(
 			'SELECT * FROM interwiki', array() );
-- 
cgit v1.2.3-54-g00ecf