Skip to content

Commit

Permalink
Fixing CakeTestFixture import feature
Browse files Browse the repository at this point in the history
  • Loading branch information
lorenzo committed Sep 26, 2010
1 parent 5538529 commit 18b38f6
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 33 deletions.
57 changes: 28 additions & 29 deletions cake/tests/cases/libs/cake_test_fixture.test.php
Expand Up @@ -84,7 +84,7 @@ class CakeTestFixtureImportFixture extends CakeTestFixture {
*
* @var mixed
*/
public $import = array('table' => 'fixture_tests', 'connection' => 'fixture_test');
public $import = array('table' => 'fixture_tests', 'connection' => 'fixture_test_suite');
}

/**
Expand Down Expand Up @@ -139,12 +139,8 @@ class CakeTestFixtureTest extends CakeTestCase {
function setUp() {
$this->criticDb = $this->getMock('DboSource');
$this->criticDb->fullDebug = true;

$dbs = ConnectionManager::enumConnectionObjects();
if (!isset($dbs['test'])) {
$db = ConnectionManager::getDatasource('test');
ConnectionManager::create('test', $db->config);
}
$this->db = ConnectionManager::getDataSource('test');
$this->_backupConfig = $this->db->config;
}

/**
Expand All @@ -155,6 +151,7 @@ function setUp() {
*/
function tearDown() {
unset($this->criticDb);
$this->db->config = $this->_backupConfig;
}

/**
Expand Down Expand Up @@ -194,16 +191,16 @@ function testInitDbPrefix() {
$this->assertEqual(array_keys($Fixture->fields), $expected);

$config = $db->config;
$config['prefix'] = 'fixture_test_';
ConnectionManager::create('fixture_test', $config);
$config['prefix'] = 'fixture_test_suite_';
ConnectionManager::create('fixture_test_suite', $config);

$Fixture->fields = $Fixture->records = null;
$Fixture->import = array('table' => 'fixture_tests', 'connection' => 'test', 'records' => true);
$Fixture->init();
$this->assertEqual(count($Fixture->records), count($Source->records));
$Fixture->create(ConnectionManager::getDataSource('fixture_test'));
$Fixture->create(ConnectionManager::getDataSource('fixture_test_suite'));

$Fixture =& new CakeTestFixtureImportFixture();
$Fixture = new CakeTestFixtureImportFixture();
$Fixture->fields = $Fixture->records = $Fixture->table = null;
$Fixture->import = array('model' => 'FixtureImportTestModel', 'connection' => 'test');
$Fixture->init();
Expand All @@ -213,7 +210,7 @@ function testInitDbPrefix() {
$keys = array_flip(ClassRegistry::keys());
$this->assertFalse(array_key_exists('fixtureimporttestmodel', $keys));

$Fixture->drop(ConnectionManager::getDataSource('fixture_test'));
$Fixture->drop(ConnectionManager::getDataSource('fixture_test_suite'));
$Source->drop($db);
}

Expand All @@ -226,12 +223,15 @@ function testInitDbPrefixDuplication() {
$db = ConnectionManager::getDataSource('test');
$backPrefix = $db->config['prefix'];
$db->config['prefix'] = 'cake_fixture_test_';
ConnectionManager::create('fixture_test_suite', $db->config);
$newDb = ConnectionManager::getDataSource('fixture_test_suite');
$newDb->config['prefix'] = 'cake_fixture_test_';

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

$Fixture =& new CakeTestFixtureImportFixture();
$Fixture = new CakeTestFixtureImportFixture();
$Fixture->fields = $Fixture->records = $Fixture->table = null;
$Fixture->import = array('model' => 'FixtureImportTestModel', 'connection' => 'test');

Expand All @@ -249,16 +249,15 @@ function testInitDbPrefixDuplication() {
* @return void
*/
function testInitModelTablePrefix() {
$db = ConnectionManager::getDataSource('test');
$hasPrefix = !empty($db->config['prefix']);
if ($hasPrefix) {
$this->markTestSkipped('Cannot run this test, you have a database connection prefix.');
$hasPrefix = !empty($this->db->config['prefix']);
if ($this->skipIf($hasPrefix, 'Cannot run this test, you have a database connection prefix.')) {
return;
}
$Source =& new CakeTestFixtureTestFixture();
$Source->create($db);
$Source->insert($db);
$Source = new CakeTestFixtureTestFixture();
$Source->create($this->db);
$Source->insert($this->db);

$Fixture =& new CakeTestFixtureTestFixture();
$Fixture = new CakeTestFixtureTestFixture();
unset($Fixture->table);
$Fixture->fields = $Fixture->records = null;
$Fixture->import = array('model' => 'FixturePrefixTest', 'connection' => 'test', 'records' => false);
Expand All @@ -268,7 +267,7 @@ function testInitModelTablePrefix() {
$keys = array_flip(ClassRegistry::keys());
$this->assertFalse(array_key_exists('fixtureimporttestmodel', $keys));

$Source->drop($db);
$Source->drop($this->db);
}

/**
Expand All @@ -282,8 +281,8 @@ function testImport() {
$testSuiteDb = ConnectionManager::getDataSource('test');
$defaultConfig = $defaultDb->config;
$testSuiteConfig = $testSuiteDb->config;
ConnectionManager::create('new_test', array_merge($testSuiteConfig, array('prefix' => 'new_' . $testSuiteConfig['prefix'])));
$newTestSuiteDb = ConnectionManager::getDataSource('new_test');
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);
Expand All @@ -293,7 +292,7 @@ function testImport() {

$Fixture = new CakeTestFixtureDefaultImportFixture();
$Fixture->fields = $Fixture->records = null;
$Fixture->import = array('model' => 'FixtureImportTestModel', 'connection' => 'new_test');
$Fixture->import = array('model' => 'FixtureImportTestModel', 'connection' => 'new_test_suite');
$Fixture->init();
$this->assertEqual(array_keys($Fixture->fields), array('id', 'name', 'created'));

Expand All @@ -317,8 +316,8 @@ function testImportWithRecords() {
$testSuiteDb = ConnectionManager::getDataSource('test');
$defaultConfig = $defaultDb->config;
$testSuiteConfig = $testSuiteDb->config;
ConnectionManager::create('new_test', array_merge($testSuiteConfig, array('prefix' => 'new_' . $testSuiteConfig['prefix'])));
$newTestSuiteDb = ConnectionManager::getDataSource('new_test');
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);
Expand All @@ -329,7 +328,7 @@ function testImportWithRecords() {
$Fixture = new CakeTestFixtureDefaultImportFixture();
$Fixture->fields = $Fixture->records = null;
$Fixture->import = array(
'model' => 'FixtureImportTestModel', 'connection' => 'new_test', 'records' => true
'model' => 'FixtureImportTestModel', 'connection' => 'new_test_suite', 'records' => true
);
$Fixture->init();
$this->assertEqual(array_keys($Fixture->fields), array('id', 'name', 'created'));
Expand Down
11 changes: 7 additions & 4 deletions cake/tests/lib/cake_test_fixture.php
Expand Up @@ -69,10 +69,13 @@ public function init() {
);

if (isset($import['model']) && App::import('Model', $import['model'])) {
ClassRegistry::config(array('ds' => $import['connection']));
$model = ClassRegistry::init($import['model']);
$db = ConnectionManager::getDataSource($model->useDbConfig);
$db->cacheSources = false;
App::import('Model', $import['model']);
list(, $modelClass) = pluginSplit($import['model']);
$model = new $modelClass(null, null, $import['connection']);
$db = $model->getDataSource();
if (empty($model->tablePrefix)) {
$model->tablePrefix = $db->config['prefix'];
}
$this->fields = $model->schema(true);
$this->fields[$model->primaryKey]['key'] = 'primary';
$this->table = $db->fullTableName($model, false);
Expand Down

0 comments on commit 18b38f6

Please sign in to comment.