Fixing some tests to make them run on sqlite

This commit is contained in:
José Lorenzo Rodríguez 2010-12-02 00:19:43 -04:30
parent 2e9283abd9
commit 2e04c5260e
6 changed files with 36 additions and 22 deletions

View file

@ -299,7 +299,7 @@ class SchemaShell extends Shell {
* *
* @access private * @access private
*/ */
function __create(&$Schema, $table = null) { function __create($Schema, $table = null) {
$db = ConnectionManager::getDataSource($this->Schema->connection); $db = ConnectionManager::getDataSource($this->Schema->connection);
$drop = $create = array(); $drop = $create = array();

View file

@ -94,11 +94,7 @@ class CakeSchema extends Object {
} }
if (empty($options['path'])) { if (empty($options['path'])) {
if (is_dir(CONFIGS . 'schema')) { $this->path = CONFIGS . 'schema';
$this->path = CONFIGS . 'schema';
} else {
$this->path = CONFIGS . 'sql';
}
} }
$options = array_merge(get_object_vars($this), $options); $options = array_merge(get_object_vars($this), $options);
@ -160,7 +156,7 @@ class CakeSchema extends Object {
* @param array $options schema object properties * @param array $options schema object properties
* @return array Set of name and tables * @return array Set of name and tables
*/ */
public function &load($options = array()) { public function load($options = array()) {
if (is_string($options)) { if (is_string($options)) {
$options = array('path' => $options); $options = array('path' => $options);
} }
@ -182,8 +178,8 @@ class CakeSchema extends Object {
$Schema = new $class($options); $Schema = new $class($options);
return $Schema; return $Schema;
} }
$false = false;
return $false; return false;
} }
/** /**
@ -298,7 +294,9 @@ class CakeSchema extends Object {
$systemTables = array( $systemTables = array(
'aros', 'acos', 'aros_acos', Configure::read('Session.table'), 'i18n' 'aros', 'acos', 'aros_acos', Configure::read('Session.table'), 'i18n'
); );
if (get_class($Object) === 'AppModel') {
continue;
}
if (in_array($table, $systemTables)) { if (in_array($table, $systemTables)) {
$tables[$Object->table] = $this->__columns($Object); $tables[$Object->table] = $this->__columns($Object);
$tables[$Object->table]['indexes'] = $db->index($Object); $tables[$Object->table]['indexes'] = $db->index($Object);

View file

@ -465,7 +465,10 @@ class DboSqlite extends DboSource {
$table = $this->fullTableName($model); $table = $this->fullTableName($model);
if ($table) { if ($table) {
$indexes = $this->query('PRAGMA index_list(' . $table . ')'); $indexes = $this->query('PRAGMA index_list(' . $table . ')');
$tableInfo = $this->query('PRAGMA table_info(' . $table . ')');
if (is_bool($indexes)) {
return array();
}
foreach ($indexes as $i => $info) { foreach ($indexes as $i => $info) {
$key = array_pop($info); $key = array_pop($info);
$keyInfo = $this->query('PRAGMA index_info("' . $key['name'] . '")'); $keyInfo = $this->query('PRAGMA index_info("' . $key['name'] . '")');
@ -502,11 +505,11 @@ class DboSqlite extends DboSource {
switch (strtolower($type)) { switch (strtolower($type)) {
case 'schema': case 'schema':
extract($data); extract($data);
if (is_array($columns)) {
foreach (array('columns', 'indexes') as $var) { $columns = "\t" . join(",\n\t", array_filter($columns));
if (is_array(${$var})) { }
${$var} = "\t" . join(",\n\t", array_filter(${$var})); if (is_array($indexes)) {
} $indexes = "\t" . join("\n\t", array_filter($indexes));
} }
return "CREATE TABLE {$table} (\n{$columns});\n{$indexes}"; return "CREATE TABLE {$table} (\n{$columns});\n{$indexes}";
break; break;

View file

@ -361,6 +361,7 @@ class DboSource extends DataSource {
} catch (PDOException $e) { } catch (PDOException $e) {
$this->_results = null; $this->_results = null;
$this->error = $e->getMessage(); $this->error = $e->getMessage();
return false;
} }
} }

View file

@ -253,7 +253,7 @@ class SchemaShellTest extends CakeTestCase {
$this->file = new File(TMP . 'tests' . DS . 'dump_test.sql'); $this->file = new File(TMP . 'tests' . DS . 'dump_test.sql');
$contents = $this->file->read(); $contents = $this->file->read();
$this->assertPattern('/CREATE TABLE `test_plugin_acos`/', $contents); $this->assertPattern('/CREATE TABLE.*?test_plugin_acos/', $contents);
$this->assertPattern('/id/', $contents); $this->assertPattern('/id/', $contents);
$this->assertPattern('/model/', $contents); $this->assertPattern('/model/', $contents);
@ -366,8 +366,7 @@ class SchemaShellTest extends CakeTestCase {
*/ */
public function testCreateNoArgs() { public function testCreateNoArgs() {
$this->Shell->params = array( $this->Shell->params = array(
'connection' => 'test', 'connection' => 'test'
'path' => APP . 'config' . DS . 'sql'
); );
$this->Shell->args = array('i18n'); $this->Shell->args = array('i18n');
$this->Shell->startup(); $this->Shell->startup();
@ -375,6 +374,8 @@ class SchemaShellTest extends CakeTestCase {
$this->Shell->create(); $this->Shell->create();
$db = ConnectionManager::getDataSource('test'); $db = ConnectionManager::getDataSource('test');
$db->cacheSources = false;
$sources = $db->listSources(); $sources = $db->listSources();
$this->assertTrue(in_array($db->config['prefix'] . 'i18n', $sources)); $this->assertTrue(in_array($db->config['prefix'] . 'i18n', $sources));
@ -396,7 +397,7 @@ class SchemaShellTest extends CakeTestCase {
$this->Shell->params = array( $this->Shell->params = array(
'connection' => 'test', 'connection' => 'test',
'name' => 'DbAcl', 'name' => 'DbAcl',
'path' => APP . 'config' . DS . 'schema' 'path' => CONFIGS . 'schema'
); );
$this->Shell->args = array('DbAcl', 'acos'); $this->Shell->args = array('DbAcl', 'acos');
$this->Shell->startup(); $this->Shell->startup();
@ -404,6 +405,7 @@ class SchemaShellTest extends CakeTestCase {
$this->Shell->create(); $this->Shell->create();
$db = ConnectionManager::getDataSource('test'); $db = ConnectionManager::getDataSource('test');
$db->cacheSources = false;
$sources = $db->listSources(); $sources = $db->listSources();
$this->assertTrue(in_array($db->config['prefix'] . 'acos', $sources), 'acos should be present.'); $this->assertTrue(in_array($db->config['prefix'] . 'acos', $sources), 'acos should be present.');
$this->assertFalse(in_array($db->config['prefix'] . 'aros', $sources), 'aros should not be found.'); $this->assertFalse(in_array($db->config['prefix'] . 'aros', $sources), 'aros should not be found.');

View file

@ -578,8 +578,18 @@ class CakeSchemaTest extends CakeTestCase {
} }
$this->assertEqual( $this->assertEqual(
$read['tables']['datatypes']['float_field'], $read['tables']['datatypes']['float_field']['length'],
$this->Schema->tables['datatypes']['float_field'] $this->Schema->tables['datatypes']['float_field']['length']
);
$this->assertEqual(
$read['tables']['datatypes']['float_field']['type'],
$this->Schema->tables['datatypes']['float_field']['type']
);
$this->assertEqual(
$read['tables']['datatypes']['float_field']['null'],
$this->Schema->tables['datatypes']['float_field']['null']
); );
$db = ConnectionManager::getDataSource('test'); $db = ConnectionManager::getDataSource('test');