Added mock DB classes.

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@9787 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ucorina 2011-11-01 17:26:27 +00:00
parent ad7dda9b75
commit aada2366d1
5 changed files with 90 additions and 3 deletions

View file

@ -30,6 +30,7 @@
require_once(_XE_PATH_.'classes/db/DBCubrid.class.php');
require_once(_XE_PATH_.'classes/db/DBMssql.class.php');
require_once(_XE_PATH_.'classes/db/DBMysql.class.php');
require_once(_XE_PATH_.'test-phpUnit/db/MockDb.php');
require_once(_XE_PATH_.'classes/xml/xmlquery/DBParser.class.php');
require_once(_XE_PATH_.'classes/xml/xmlquery/argument/Argument.class.php');

View file

@ -16,7 +16,9 @@
$db_info->slave_db = array(array('db_type' => 'cubrid','db_table_prefix' => 'xe_'));
$oContext->setDbInfo($db_info);
DB::getParser(true);
$db = new MockDb();
$db->getParser(true);
}
/**

View file

@ -0,0 +1,81 @@
<?php
/**
* @brief Mock database base class
*
* Used to load mock classes instead of actual ones,
* so that connect methods can be skipped
*/
class MockDb extends DB {
function &getParser($force = false){
static $dbParser = null;
if(!$dbParser || $force) {
$oDB = &MockDb::getInstance();
$dbParser = $oDB->getParser();
DB::getParser(true);
}
return $dbParser;
}
function &getInstance(){
$db_type = Context::getDBType();
if(!isset($GLOBALS['__DB__'])) $GLOBALS['__DB__'] = array();
if(!isset($GLOBALS['__DB__'][$db_type])) {
switch($db_type){
case 'mssql' :
$GLOBALS['__DB__'][$db_type] = new MockDBMssql; break;
case 'mysql' :
$GLOBALS['__DB__'][$db_type] = new MockDBMysql; break;
case 'cubrid' :
$GLOBALS['__DB__'][$db_type] = new MockDBCubrid; break;
}
}
return $GLOBALS['__DB__'][$db_type];
}
}
/**
* @brief Mock up for MS SQL class
*
* Overrides default constructor in order to skip connect method
*/
class MockDBMssql extends DBMssql {
function MockDBMssql(){
$this->_setDBInfo();
}
}
/**
* @brief Mock up for CUBRID class
*
* Overrides default constructor in order to skip connect method
*/
class MockDBCubrid extends DBCubrid {
function MockDBCubrid(){
$this->_setDBInfo();
}
}
/**
* @brief Mock up for Mysql class
*
* Overri des default constructor in order to skip connect method.
*/
class MockDBMysql extends DBMysql {
function MockDBMysql(){
$this->_setDBInfo();
}
/**
* Overrides mysql_real_escape_string, that returns null when no connection is present
*/
function addQuotes($string){
return $string;
}
}
?>

View file

@ -15,7 +15,8 @@
$oContext->setDbInfo($db_info);
DB::getParser(true);
$db = new MockDb();
$db->getParser(true);
}
protected function tearDown() {

View file

@ -16,7 +16,9 @@
$db_info->slave_db = array(array('db_type' => 'mysql','db_table_prefix' => 'xe_'));
$oContext->setDbInfo($db_info);
DB::getParser(true);
$db = new MockDb();
$db->getParser(true);
}
/**