Skip to content

Commit

Permalink
Adding tests for Fixture importing. Fixing importing fixtures for dat…
Browse files Browse the repository at this point in the history
…abases that require custom fields handling like postgresql. Fixes #481
  • Loading branch information
markstory committed Mar 23, 2010
1 parent 1230b83 commit 3883f72
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 6 deletions.
37 changes: 37 additions & 0 deletions cake/tests/cases/libs/cake_test_fixture.test.php
Expand Up @@ -230,6 +230,43 @@ function testImport() {
$Source->drop($newTestSuiteDb);
}

/**
* test that importing with records works. Make sure to try with postgres as its
* handling of aliases is a workaround at best.
*
* @return void
*/
function testImportWithRecords() {
$this->_initDb();

$defaultDb =& ConnectionManager::getDataSource('default');
$testSuiteDb =& ConnectionManager::getDataSource('test_suite');
$defaultConfig = $defaultDb->config;
$testSuiteConfig = $testSuiteDb->config;
ConnectionManager::create('new_test_suite', array_merge($testSuiteConfig, array('prefix' => 'new_' . $testSuiteConfig['prefix'])));
$newTestSuiteDb =& ConnectionManager::getDataSource('new_test_suite');

$Source =& new CakeTestFixtureTestFixture();
$Source->create($newTestSuiteDb);
$Source->insert($newTestSuiteDb);

$defaultDb->config = $newTestSuiteDb->config;

$Fixture =& new CakeTestFixtureDefaultImportFixture();
$Fixture->fields = $Fixture->records = null;
$Fixture->import = array(
'model' => 'FixtureImportTestModel', 'connection' => 'new_test_suite', 'records' => true
);
$Fixture->init();
$this->assertEqual(array_keys($Fixture->fields), array('id', 'name', 'created'));
$this->assertFalse(empty($Fixture->records[0]), 'No records loaded on importing fixture.');
$this->assertTrue(isset($Fixture->records[0]['name']), 'No name loaded for first record');

$defaultDb->config = $defaultConfig;

$Source->drop($newTestSuiteDb);
}

/**
* test create method
*
Expand Down
11 changes: 5 additions & 6 deletions cake/tests/lib/cake_test_fixture.php
Expand Up @@ -68,7 +68,10 @@ function __construct() {
*/
function init() {
if (isset($this->import) && (is_string($this->import) || is_array($this->import))) {
$import = array_merge(array('connection' => 'default', 'records' => false), is_array($this->import) ? $this->import : array('model' => $this->import));
$import = array_merge(
array('connection' => 'default', 'records' => false),
is_array($this->import) ? $this->import : array('model' => $this->import)
);

if (isset($import['model']) && App::import('Model', $import['model'])) {
ClassRegistry::config(array('ds' => $import['connection']));
Expand All @@ -93,18 +96,14 @@ function init() {
if (isset($import['records']) && $import['records'] !== false && isset($model) && isset($db)) {
$this->records = array();
$query = array(
'fields' => array_keys($this->fields),
'fields' => $db->fields($model, null, array_keys($this->fields)),
'table' => $db->fullTableName($model->table),
'alias' => $model->alias,
'conditions' => array(),
'order' => null,
'limit' => null,
'group' => null
);

foreach ($query['fields'] as $index => $field) {
$query['fields'][$index] = $db->name($query['alias']) . '.' . $db->name($field);
}
$records = $db->fetchAll($db->buildStatement($query, $model), false, $model->alias);

if ($records !== false && !empty($records)) {
Expand Down

0 comments on commit 3883f72

Please sign in to comment.