1
0
mirror of synced 2024-12-13 14:56:01 +03:00
doctrine2/tests/DriverTestCase.php
2006-11-24 23:23:52 +00:00

120 lines
3.5 KiB
PHP

<?php
class AdapterMock implements Doctrine_Adapter_Interface {
private $name;
private $queries = array();
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
public function pop() {
return array_pop($this->queries);
}
public function prepare($prepareString){
return new AdapterStatementMock;
}
public function query($queryString) {
$this->queries[] = $queryString;
return new AdapterStatementMock;
}
public function quote($input){ }
public function exec($statement) {
$this->queries[] = $statement;
return 0;
}
public function lastInsertId(){ }
public function beginTransaction(){
$this->queries[] = 'BEGIN TRANSACTION';
}
public function commit(){
$this->queries[] = 'COMMIT';
}
public function rollBack(){ }
public function errorCode(){ }
public function errorInfo(){ }
public function getAttribute($attribute) {
if($attribute == PDO::ATTR_DRIVER_NAME)
return $this->name;
}
public function setAttribute($attribute, $value) {
}
}
class AdapterStatementMock {
public function fetch($fetchMode) {
return array();
}
public function fetchAll($fetchMode) {
return array();
}
}
class Doctrine_Driver_UnitTestCase extends UnitTestCase {
protected $driverName = false;
protected $generic = false;
protected $manager;
protected $conn;
protected $adapter;
protected $export;
protected $dataDict;
protected $transaction;
public function __construct($driverName, $generic = false) {
$this->driverName = $driverName;
$this->generic = $generic;
}
public function assertDeclarationType($type, $type2) {
$dec = $this->getDeclaration($type);
if( ! is_array($type2))
$type2 = array($type2);
$this->assertEqual($dec[0], $type2);
}
public function getDeclaration($type) {
return $this->dataDict->getDoctrineDeclaration(array('type' => $type, 'name' => 'colname', 'length' => 1, 'fixed' => true));
}
public function init() {
$this->adapter = new AdapterMock($this->driverName);
$this->manager = Doctrine_Manager::getInstance();
$this->manager->setDefaultAttributes();
$this->conn = $this->manager->openConnection($this->adapter);
if( ! $this->generic) {
$this->export = $this->conn->export;
$name = $this->adapter->getName();
if($this->adapter->getName() == 'oci')
$name = 'Oracle';
$tx = 'Doctrine_Transaction_' . ucwords($name);
$dataDict = 'Doctrine_DataDict_' . ucwords($name);
if(class_exists($tx))
$this->transaction = new $tx($this->conn);
if(class_exists($dataDict)) {
$this->dataDict = new $dataDict($this->conn);
}
//$this->dataDict = $this->conn->dataDict;
} else {
$this->export = new Doctrine_Export($this->conn);
$this->transaction = new Doctrine_Transaction($this->conn);
}
}
public function setUp() {
static $init = false;
if( ! $init) {
$this->init();
$init = true;
}
}
}
?>