diff --git a/lib/ConnectionManager.php b/lib/ConnectionManager.php index fb16d167f..727c33dac 100644 --- a/lib/ConnectionManager.php +++ b/lib/ConnectionManager.php @@ -39,10 +39,15 @@ public static function get_connection($name=null) * Drops the connection from the connection manager. Does not actually close it since there * is no close method in PDO. * + * If $name is null then the default connection will be returned. + * * @param string $name Name of the connection to forget about */ public static function drop_connection($name=null) { + $config = Config::instance(); + $name = $name ? $name : $config->get_default_connection(); + if (isset(self::$connections[$name])) unset(self::$connections[$name]); } diff --git a/test/ConnectionManagerTest.php b/test/ConnectionManagerTest.php index ca29b0452..6e1e02580 100644 --- a/test/ConnectionManagerTest.php +++ b/test/ConnectionManagerTest.php @@ -10,7 +10,7 @@ public function test_get_connection_with_null_connection() $this->assert_not_null(ConnectionManager::get_connection(null)); $this->assert_not_null(ConnectionManager::get_connection()); } - + public function test_get_connection() { $this->assert_not_null(ConnectionManager::get_connection('mysql')); @@ -18,22 +18,40 @@ public function test_get_connection() public function test_get_connection_uses_existing_object() { - $a = ConnectionManager::get_connection('mysql'); - $a->harro = 'harro there'; + $connection = ConnectionManager::get_connection('mysql'); + $this->assert_same($connection, ConnectionManager::get_connection('mysql')); + } + + public function test_get_connection_with_default() + { + $default = ActiveRecord\Config::instance()->get_default_connection('mysql'); + $connection = ConnectionManager::get_connection(); + $this->assert_same(ConnectionManager::get_connection($default), $connection); + } + + public function test_gh_91_get_connection_with_null_connection_is_always_default() + { + $conn_one = ConnectionManager::get_connection('mysql'); + $conn_two = ConnectionManager::get_connection(); + $conn_three = ConnectionManager::get_connection('mysql'); + $conn_four = ConnectionManager::get_connection(); + + $this->assert_same($conn_one, $conn_three); + $this->assert_same($conn_two, $conn_three); + $this->assert_same($conn_four, $conn_three); + } - $this->assert_same($a,ConnectionManager::get_connection('mysql')); + public function test_drop_connection() + { + $connection = ConnectionManager::get_connection('mysql'); + ConnectionManager::drop_connection('mysql'); + $this->assert_not_same($connection, ConnectionManager::get_connection('mysql')); } - public function test_gh_91_get_connection_with_null_connection_is_always_default() - { - $conn_one = ConnectionManager::get_connection('mysql'); - $conn_two = ConnectionManager::get_connection(); - $conn_three = ConnectionManager::get_connection('mysql'); - $conn_four = ConnectionManager::get_connection(); - - $this->assert_same($conn_one, $conn_three); - $this->assert_same($conn_two, $conn_three); - $this->assert_same($conn_four, $conn_three); - } + public function test_drop_connection_with_default() + { + $connection = ConnectionManager::get_connection(); + ConnectionManager::drop_connection(); + $this->assert_not_same($connection, ConnectionManager::get_connection()); + } } -?>