From 4b6008b17d8c57a1581fe2886bc106b3ac6555f1 Mon Sep 17 00:00:00 2001 From: gnat Date: Fri, 8 Dec 2006 15:43:36 +0000 Subject: [PATCH] added Mock DB Driver to allow Table property inspection without a real connection to a database --- lib/Doctrine/Connection/Mock.php | 48 ++++++++++++++++++++++ lib/Doctrine/Db/Mock.php | 68 ++++++++++++++++++++++++++++++++ lib/Doctrine/Manager.php | 3 ++ 3 files changed, 119 insertions(+) create mode 100644 lib/Doctrine/Connection/Mock.php create mode 100644 lib/Doctrine/Db/Mock.php diff --git a/lib/Doctrine/Connection/Mock.php b/lib/Doctrine/Connection/Mock.php new file mode 100644 index 000000000..6d02f482e --- /dev/null +++ b/lib/Doctrine/Connection/Mock.php @@ -0,0 +1,48 @@ +. + */ +Doctrine::autoload('Doctrine_Connection_Common'); +/** + * Doctrine_Connection_Mysql + * + * @package Doctrine + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @author Konsta Vesterinen + * @author Lukas Smith (PEAR MDB2 library) + * @version $Revision$ + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + */ +class Doctrine_Connection_Mock extends Doctrine_Connection_Common { + /** + * @var string $driverName the name of this connection driver + */ + protected $driverName = 'Mock'; + /** + * the constructor + * + * @param Doctrine_Manager $manager + * @param PDO|Doctrine_Adapter $adapter database handler + */ + public function __construct(Doctrine_Manager $manager, $adapter) { + + } +} diff --git a/lib/Doctrine/Db/Mock.php b/lib/Doctrine/Db/Mock.php new file mode 100644 index 000000000..c5c76f95b --- /dev/null +++ b/lib/Doctrine/Db/Mock.php @@ -0,0 +1,68 @@ +. + */ +Doctrine::autoload('Doctrine_Db'); +/** + * @package Doctrine + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @author Konsta Vesterinen + * @author Lukas Smith (PEAR MDB2 library) + * @version $Revision$ + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + */ +class Doctrine_Db_Mock extends Doctrine_Db { + protected static $errorCodeMap = array( + 1004 => Doctrine_Db::ERR_CANNOT_CREATE, + 1005 => Doctrine_Db::ERR_CANNOT_CREATE, + 1006 => Doctrine_Db::ERR_CANNOT_CREATE, + 1007 => Doctrine_Db::ERR_ALREADY_EXISTS, + 1008 => Doctrine_Db::ERR_CANNOT_DROP, + 1022 => Doctrine_Db::ERR_ALREADY_EXISTS, + 1044 => Doctrine_Db::ERR_ACCESS_VIOLATION, + 1046 => Doctrine_Db::ERR_NODBSELECTED, + 1048 => Doctrine_Db::ERR_CONSTRAINT, + 1049 => Doctrine_Db::ERR_NOSUCHDB, + 1050 => Doctrine_Db::ERR_ALREADY_EXISTS, + 1051 => Doctrine_Db::ERR_NOSUCHTABLE, + 1054 => Doctrine_Db::ERR_NOSUCHFIELD, + 1061 => Doctrine_Db::ERR_ALREADY_EXISTS, + 1062 => Doctrine_Db::ERR_ALREADY_EXISTS, + 1064 => Doctrine_Db::ERR_SYNTAX, + 1091 => Doctrine_Db::ERR_NOT_FOUND, + 1100 => Doctrine_Db::ERR_NOT_LOCKED, + 1136 => Doctrine_Db::ERR_VALUE_COUNT_ON_ROW, + 1142 => Doctrine_Db::ERR_ACCESS_VIOLATION, + 1146 => Doctrine_Db::ERR_NOSUCHTABLE, + 1216 => Doctrine_Db::ERR_CONSTRAINT, + 1217 => Doctrine_Db::ERR_CONSTRAINT, + ); + public function connect() + { + return true; + } + + public function getAttribute($attribute) + { + if($attribute == PDO::ATTR_DRIVER_NAME) + return 'mock'; + } +} diff --git a/lib/Doctrine/Manager.php b/lib/Doctrine/Manager.php index 1a716efa0..581cac099 100644 --- a/lib/Doctrine/Manager.php +++ b/lib/Doctrine/Manager.php @@ -199,6 +199,9 @@ class Doctrine_Manager extends Doctrine_Configurable implements Countable, Itera case "informix": $this->connections[$name] = new Doctrine_Connection_Informix($this, $adapter); break; + case "mock": + $this->connections[$name] = new Doctrine_Connection_Mock($this, $adapter); + break; default: throw new Doctrine_Manager_Exception('Unknown connection driver '. $adapter->getAttribute(PDO::ATTR_DRIVER_NAME)); endswitch;