Skip to content

Commit

Permalink
Adding test case for model task
Browse files Browse the repository at this point in the history
Fixing missing case for float datatypes when generating fixtures.
Fixes #204
  • Loading branch information
markstory committed Oct 24, 2009
1 parent 14bd478 commit 72830cb
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 2 deletions.
6 changes: 4 additions & 2 deletions cake/console/libs/tasks/model.php
Expand Up @@ -99,6 +99,7 @@ function __interactive() {
if (count($connections) > 1) {
$useDbConfig = $this->in(__('Use Database Config', true) .':', $connections, 'default');
}
$this->useDbConfig = $useDbConfig;

$currentModelName = $this->getName($useDbConfig);
$db =& ConnectionManager::getDataSource($useDbConfig);
Expand Down Expand Up @@ -843,7 +844,7 @@ function fixture($model, $useTable = null) {
$out .= "\tvar \$table = '$useTable';\n";
}
$schema = new CakeSchema();
$data = $schema->read(array('models' => false));
$data = $schema->read(array('models' => false, 'connection' => $this->useDbConfig));

if (!isset($data['tables'][$useTable])) {
return false;
Expand All @@ -865,6 +866,7 @@ function fixture($model, $useTable = null) {
$col = "\t\t'{$field}' => array('type'=>'" . $value['type'] . "', ";

switch ($value['type']) {
case 'float':
case 'integer':
$insert = 1;
break;
Expand Down Expand Up @@ -898,7 +900,7 @@ function fixture($model, $useTable = null) {
$insert .= "feugiat in taciti enim proin nibh, tempor dignissim, rhoncus duis vestibulum nunc mattis convallis.'";
break;
}
$records[] = "\t\t'$field' => $insert";
$records[] = "\t\t'$field' => $insert";
unset($value['type']);
$col .= join(', ', $schema->__values($value));
} else {
Expand Down
90 changes: 90 additions & 0 deletions cake/tests/cases/console/libs/tasks/model.test.php
@@ -0,0 +1,90 @@
<?php
/* SVN FILE: $Id$ */
/**
* ModelTaskTest file
*
* Test Case for test generation shell task
*
* PHP versions 4 and 5
*
* CakePHP : Rapid Development Framework (http://www.cakephp.org)
* Copyright 2006-2009, Cake Software Foundation, Inc.
*
* Licensed under The MIT License
* Redistributions of files must retain the above copyright notice.
*
* @filesource
* @copyright Copyright 2006-2009, Cake Software Foundation, Inc.
* @link http://www.cakefoundation.org/projects/info/cakephp CakePHP Project
* @package cake
* @subpackage cake.tests.cases.console.libs.tasks
* @since CakePHP v 1.2.6
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
*/
App::import('Core', 'Shell');

if (!defined('DISABLE_AUTO_DISPATCH')) {
define('DISABLE_AUTO_DISPATCH', true);
}

if (!class_exists('ShellDispatcher')) {
ob_start();
$argv = false;
require CAKE . 'console' . DS . 'cake.php';
ob_end_clean();
}

if (!class_exists('TestTask')) {
require CAKE . 'console' . DS . 'libs' . DS . 'tasks' . DS . 'model.php';
}

Mock::generatePartial(
'ShellDispatcher', 'TestModelTaskMockShellDispatcher',
array('getInput', 'stdout', 'stderr', '_stop', '_initEnvironment')
);
Mock::generatePartial(
'ModelTask', 'MockModelTask',
array('in', 'out', 'createFile')
);
/**
* ModelTaskTest class
*
* @package cake
* @subpackage cake.tests.cases.console.libs.tasks
*/
class ModelTaskTest extends CakeTestCase {
var $fixtures = array('core.datatype');
/**
* setUp method
*
* @return void
* @access public
*/
function setUp() {
$this->Dispatcher =& new TestModelTaskMockShellDispatcher();
$this->Task =& new MockModelTask($this->Dispatcher);
$this->Task->Dispatch =& $this->Dispatcher;
}
/**
* tearDown method
*
* @return void
* @access public
*/
function tearDown() {
ClassRegistry::flush();
}
/**
* test fixture generation with floats
*
* @return void
**/
function testFixtureGeneration() {
$this->Task->useDbConfig = 'test_suite';
$this->Task->setReturnValue('createFile', true);
$result = $this->Task->fixture('Datatype');
$this->assertPattern('/float_field\' => 1/', $result);

}
}
?>

0 comments on commit 72830cb

Please sign in to comment.