Commit a27733a0 authored by jeroendedauw's avatar jeroendedauw

Split the methods in TestUtil more and improve naming

parent 8dbf562d
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
namespace Doctrine\Tests; namespace Doctrine\Tests;
use Doctrine\DBAL\Connection;
use Doctrine\DBAL\DriverManager; use Doctrine\DBAL\DriverManager;
/** /**
...@@ -32,61 +33,23 @@ class TestUtil ...@@ -32,61 +33,23 @@ class TestUtil
* 1) Each invocation of this method returns a NEW database connection. * 1) Each invocation of this method returns a NEW database connection.
* 2) The database is dropped and recreated to ensure it's clean. * 2) The database is dropped and recreated to ensure it's clean.
* *
* @return \Doctrine\DBAL\Connection The database connection instance. * @return Connection The database connection instance.
*/ */
public static function getConnection() public static function getConnection()
{ {
if (self::hasRequiredConnectionParams()) { $conn = DriverManager::getConnection(self::getConnectionParams());
$realDbParams = self::getConnectionParams();
$tmpDbParams = self::getTmpConnectionParams();
$realConn = DriverManager::getConnection($realDbParams);
// Connect to tmpdb in order to drop and create the real test db.
$tmpConn = DriverManager::getConnection($tmpDbParams);
$platform = $tmpConn->getDatabasePlatform();
if ($platform->supportsCreateDropDatabase()) {
$dbname = $realConn->getDatabase();
$realConn->close();
$tmpConn->getSchemaManager()->dropAndCreateDatabase($dbname);
$tmpConn->close();
} else {
$sm = $realConn->getSchemaManager();
$schema = $sm->createSchema(); self::addDbEventSubscribers($conn);
$stmts = $schema->toDropSql($realConn->getDatabasePlatform());
foreach ($stmts as $stmt) { return $conn;
$realConn->exec($stmt); }
}
}
$conn = DriverManager::getConnection($realDbParams, null, null);
} else {
$params = array(
'driver' => 'pdo_sqlite',
'memory' => true
);
if (isset($GLOBALS['db_path'])) {
$params['path'] = $GLOBALS['db_path'];
unlink($GLOBALS['db_path']);
}
$conn = DriverManager::getConnection($params);
}
if (isset($GLOBALS['db_event_subscribers'])) { private static function getConnectionParams() {
$evm = $conn->getEventManager(); if (self::hasRequiredConnectionParams()) {
foreach (explode(",", $GLOBALS['db_event_subscribers']) as $subscriberClass) { return self::getSpecifiedConnectionParams();
$subscriberInstance = new $subscriberClass();
$evm->addEventSubscriber($subscriberInstance);
}
} }
return $conn; return self::getFallbackConnectionParams();
} }
private static function hasRequiredConnectionParams() private static function hasRequiredConnectionParams()
...@@ -108,7 +71,63 @@ class TestUtil ...@@ -108,7 +71,63 @@ class TestUtil
); );
} }
private static function getTmpConnectionParams() private static function getSpecifiedConnectionParams() {
$realDbParams = self::getParamsForMainConnection();
$tmpDbParams = self::getParamsForTemporaryConnection();
$realConn = DriverManager::getConnection($realDbParams);
// Connect to tmpdb in order to drop and create the real test db.
$tmpConn = DriverManager::getConnection($tmpDbParams);
$platform = $tmpConn->getDatabasePlatform();
if ($platform->supportsCreateDropDatabase()) {
$dbname = $realConn->getDatabase();
$realConn->close();
$tmpConn->getSchemaManager()->dropAndCreateDatabase($dbname);
$tmpConn->close();
} else {
$sm = $realConn->getSchemaManager();
$schema = $sm->createSchema();
$stmts = $schema->toDropSql($realConn->getDatabasePlatform());
foreach ($stmts as $stmt) {
$realConn->exec($stmt);
}
}
return $realDbParams;
}
private static function getFallbackConnectionParams() {
$params = array(
'driver' => 'pdo_sqlite',
'memory' => true
);
if (isset($GLOBALS['db_path'])) {
$params['path'] = $GLOBALS['db_path'];
unlink($GLOBALS['db_path']);
}
return $params;
}
private static function addDbEventSubscribers(Connection $conn) {
if (isset($GLOBALS['db_event_subscribers'])) {
$evm = $conn->getEventManager();
foreach (explode(",", $GLOBALS['db_event_subscribers']) as $subscriberClass) {
$subscriberInstance = new $subscriberClass();
$evm->addEventSubscriber($subscriberInstance);
}
}
}
private static function getParamsForTemporaryConnection()
{ {
$connectionParams = array( $connectionParams = array(
'driver' => $GLOBALS['tmpdb_type'], 'driver' => $GLOBALS['tmpdb_type'],
...@@ -134,7 +153,7 @@ class TestUtil ...@@ -134,7 +153,7 @@ class TestUtil
return $connectionParams; return $connectionParams;
} }
private static function getConnectionParams() private static function getParamsForMainConnection()
{ {
$connectionParams = array( $connectionParams = array(
'driver' => $GLOBALS['db_type'], 'driver' => $GLOBALS['db_type'],
...@@ -157,10 +176,10 @@ class TestUtil ...@@ -157,10 +176,10 @@ class TestUtil
} }
/** /**
* @return \Doctrine\DBAL\Connection * @return Connection
*/ */
public static function getTempConnection() public static function getTempConnection()
{ {
return DriverManager::getConnection(self::getTmpConnectionParams()); return DriverManager::getConnection(self::getParamsForTemporaryConnection());
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment