1
0
mirror of synced 2024-12-13 14:56:01 +03:00
doctrine2/tests/ImportTestCase.php
2006-10-25 20:02:40 +00:00

226 lines
6.4 KiB
PHP

<?php
/**
* ImportTestCase.php - 24.8.2006 2.37.14
*
* Note that some shortcuts maybe used here
* i.e. these tests depends that exporting is working
*
* @author Jukka Hassinen <Jukka.Hassinen@BrainAlliance.com>
* @version $Id$
* @package Doctrine
*/
class Doctrine_Import_TestCase extends Doctrine_UnitTestCase {
private $tmpdir;
private $suffix;
private $schema;
public function prepareTables() { }
public function prepareData() { }
public function setUp()
{
parent::setUp();
//reading
$reader = new Doctrine_Import_Reader_Db();
$reader->setPdo($this->dbh);
$this->schema = $reader->read();
}
public function testBadImport() {
$builder = new Doctrine_Import_Builder();
try {
$builder->buildRecord(new Doctrine_Schema_Table());
$this->fail();
} catch(Doctrine_Import_Builder_Exception $e) {
$this->pass();
}
}
public function testImportTable() {
$definition = array('name' => 'import_test');
$table = new Doctrine_Schema_Table($definition);
$def = array('name' => 'name',
'type' => 'string',
'length' => 20,
'default' => 'someone');
$table->addColumn(new Doctrine_Schema_Column($def));
$def = array('name' => 'created',
'type' => 'integer',
'notnull' => true);
$table->addColumn(new Doctrine_Schema_Column($def));
$builder = new Doctrine_Import_Builder();
$builder->setTargetPath('tmp');
try {
$builder->buildRecord($table);
$this->pass();
} catch(Doctrine_Import_Builder_Exception $e) {
$this->fail();
}
$this->assertTrue(file_exists('tmp' . DIRECTORY_SEPARATOR . 'ImportTest.php'));
}
public function testImportedComponent() {
require_once('tmp' . DIRECTORY_SEPARATOR . 'ImportTest.php');
$r = new ImportTest();
$columns = $r->getTable()->getColumns();
// id column is auto-created
$this->assertEqual($columns['id'][0], 'integer');
$this->assertEqual($columns['id'][1], 20);
$this->assertEqual($columns['name'][0], 'string');
$this->assertEqual($columns['name'][1], 20);
$this->assertEqual($columns['created'][0], 'integer');
unlink('tmp' . DIRECTORY_SEPARATOR . 'ImportTest.php');
}
public function testForeignKeySupport() {
/**
$this->dbh->query('CREATE TABLE album (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
title VARCHAR(100),
artist VARCHAR(100)
)');
$this->dbh->query('CREATE TABLE track (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
album_id INTEGER,
dsk INTEGER,
posn INTEGER,
song VARCHAR(255),
FOREIGN KEY (album_id) REFERENCES album(id)
)');
$sql = "PRAGMA table_info(track)";
$sql = "PRAGMA foreign_key_list(track)";
$result = $this->dbh->query($sql)->fetchAll(PDO::FETCH_ASSOC);
*/
}
/**
public function testDatabaseConnectionIsReverseEngineeredToSchema()
{
$this->assertTrue($this->schema instanceof Doctrine_Schema);
//table count should match
$this->assertEqual(count($this->schema), count($this->tables));
}
public function testBaseClassesAreWritten()
{
//now lets match the original with the result
foreach($this->tables as $name)
{
$name = ucwords($name);
$filename = $this->tmpdir.$name.$this->suffix.'.php';
$this->assertTrue(file_exists($filename));
}
}
public function testNativeColumnDefinitionsAreTranslatedCorrectly()
{
$transArr = array();
$transArr['sqlite'] = array(
// array(native type, native length, doctrine type, doctrine length),
array('int', 11, 'int', 11),
//array('varchar', 255, 'string', 255),
);
foreach ($transArr as $dbType => $colArr)
{
foreach($colArr as $colDef)
{
list($natType, $natLen, $expType, $expLen) = $colDef;
list($resType, $resLen) = Doctrine_DataDict::getDoctrineType($natType, $natLen, $dbType);
$this->assertEqual($resType, $expType);
$this->assertEqual($resLen, $expLen);
}
}
}
public function testDoctrineRecordBaseClassesAreBuildCorrectly()
{
foreach($this->tables as $name)
{
$name = ucwords($name);
$filename = $this->tmpdir.$name.$this->suffix.'.php';
if(file_exists($filename))
{
require_once $filename;
$obj = new $name.$this->suffix;
list($oType, $oLength,) = $this->connection->getTable($name)->getColumns();
list($rType, $rLength,) = $this->connection->getTable($name.$this->suffix)->getColumns();
$this->assertEquals($rType, $oType);
$this->assertEquals($rLength, $oLength);
}
}
}
*/
// Gets the system temporary directory name
// @return null on failure to resolve the system temp dir
private function getTempDir()
{
/**
if(function_exists('sys_get_temp_dir')) {
$tempdir = sys_get_temp_dir();
} elseif (!empty($_ENV['TMP'])) {
$tempdir = $_ENV['TMP'];
} elseif (!empty($_ENV['TMPDIR'])) {
$tempdir = $_ENV['TMPDIR'];
} elseif (!empty($_ENV['TEMP'])) {
$tempdir = $_ENV['TEMP'];
} else {
//a little bit of chewing gum here will do the trick
$tempdir = dirname(tempnam('/THIS_REALLY_SHOULD_NOT_EXISTS', 'na'));
}
if (empty($tempdir)) { return null; }
$tempdir = rtrim($tempdir, '/');
$tempdir .= DIRECTORY_SEPARATOR;
if (is_writable($tempdir) == false) {
return null;
}
$dir = tempnam($tempdir, 'doctrine_tests');
@unlink($dir);
@rmdir($dir);
mkdir($dir);
$dir .= DIRECTORY_SEPARATOR;
return $dir;
*/
}
}