mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2025-09-04 18:42:40 +00:00
Adding test case for DbConfig task
making DbConfigTask testable.
This commit is contained in:
parent
dc01673503
commit
5843d5e40a
2 changed files with 168 additions and 9 deletions
|
@ -24,9 +24,6 @@
|
|||
* @lastmodified $Date$
|
||||
* @license http://www.opensource.org/licenses/mit-license.php The MIT License
|
||||
*/
|
||||
if (!class_exists('File')) {
|
||||
uses('file');
|
||||
}
|
||||
/**
|
||||
* Task class for creating and updating the database configuration file.
|
||||
*
|
||||
|
@ -52,6 +49,13 @@ class DbConfigTask extends Shell {
|
|||
'login'=> 'root', 'password'=> 'password', 'database'=> 'project_name',
|
||||
'schema'=> null, 'prefix'=> null, 'encoding' => null, 'port' => null
|
||||
);
|
||||
/**
|
||||
* String name of the database config class name.
|
||||
* Used for testing.
|
||||
*
|
||||
* @var string
|
||||
**/
|
||||
var $databaseClassName = 'DATABASE_CONFIG';
|
||||
/**
|
||||
* initialization callback
|
||||
*
|
||||
|
@ -92,8 +96,7 @@ class DbConfigTask extends Shell {
|
|||
if (preg_match('/[^a-z0-9_]/i', $name)) {
|
||||
$name = '';
|
||||
$this->out('The name may only contain unaccented latin characters, numbers or underscores');
|
||||
}
|
||||
else if (preg_match('/^[^a-z_]/i', $name)) {
|
||||
} else if (preg_match('/^[^a-z_]/i', $name)) {
|
||||
$name = '';
|
||||
$this->out('The name must start with an unaccented latin character or an underscore');
|
||||
}
|
||||
|
@ -240,7 +243,7 @@ class DbConfigTask extends Shell {
|
|||
$this->hr();
|
||||
$looksGood = $this->in('Look okay?', array('y', 'n'), 'y');
|
||||
|
||||
if (low($looksGood) == 'y' || low($looksGood) == 'yes') {
|
||||
if (strtolower($looksGood) == 'y') {
|
||||
return $config;
|
||||
}
|
||||
return false;
|
||||
|
@ -262,7 +265,7 @@ class DbConfigTask extends Shell {
|
|||
$oldConfigs = array();
|
||||
|
||||
if (file_exists($filename)) {
|
||||
$db = new DATABASE_CONFIG;
|
||||
$db = new $this->databaseClassName;
|
||||
$temp = get_class_vars(get_class($db));
|
||||
|
||||
foreach ($temp as $configName => $info) {
|
||||
|
@ -346,7 +349,7 @@ class DbConfigTask extends Shell {
|
|||
|
||||
$out .= "}\n";
|
||||
$out .= "?>";
|
||||
$filename = $this->path.'database.php';
|
||||
$filename = $this->path . 'database.php';
|
||||
return $this->createFile($filename, $out);
|
||||
}
|
||||
|
||||
|
@ -357,7 +360,7 @@ class DbConfigTask extends Shell {
|
|||
**/
|
||||
function getConfig() {
|
||||
$useDbConfig = 'default';
|
||||
$configs = get_class_vars('DATABASE_CONFIG');
|
||||
$configs = get_class_vars($this->databaseClassName);
|
||||
|
||||
if (!is_array($configs)) {
|
||||
return $this->execute();
|
||||
|
@ -369,5 +372,6 @@ class DbConfigTask extends Shell {
|
|||
}
|
||||
return $useDbConfig;
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
155
cake/tests/cases/console/libs/tasks/db_config.test.php
Normal file
155
cake/tests/cases/console/libs/tasks/db_config.test.php
Normal file
|
@ -0,0 +1,155 @@
|
|||
<?php
|
||||
/**
|
||||
* DBConfigTask Test Case
|
||||
*
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
|
||||
* Copyright 2005-2009, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
*
|
||||
* Licensed under The MIT License
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @copyright Copyright 2005-2009, Cake Software Foundation, Inc. (http://cakefoundation.org)
|
||||
* @link http://cakephp.org
|
||||
* @package cake
|
||||
* @subpackage cake.tests.cases.console.libs.tasks
|
||||
* @since CakePHP(tm) v 1.3
|
||||
* @license MIT License (http://www.opensource.org/licenses/mit-license.php)
|
||||
*/
|
||||
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();
|
||||
}
|
||||
|
||||
require_once CAKE . 'console' . DS . 'libs' . DS . 'tasks' . DS . 'db_config.php';
|
||||
//require_once CAKE . 'console' . DS . 'libs' . DS . 'tasks' . DS . 'template.php';
|
||||
|
||||
|
||||
Mock::generatePartial(
|
||||
'ShellDispatcher', 'TestDbConfigTaskMockShellDispatcher',
|
||||
array('getInput', 'stdout', 'stderr', '_stop', '_initEnvironment')
|
||||
);
|
||||
|
||||
Mock::generatePartial(
|
||||
'DbConfigTask', 'MockDbConfigTask',
|
||||
array('in', 'hr', 'out', 'err', 'createFile', '_stop', '_checkUnitTest')
|
||||
);
|
||||
|
||||
class TEST_DATABASE_CONFIG {
|
||||
var $default = array(
|
||||
'driver' => 'mysql',
|
||||
'persistent' => false,
|
||||
'host' => 'localhost',
|
||||
'login' => 'user',
|
||||
'password' => 'password',
|
||||
'database' => 'database_name',
|
||||
'prefix' => '',
|
||||
);
|
||||
|
||||
var $otherOne = array(
|
||||
'driver' => 'mysql',
|
||||
'persistent' => false,
|
||||
'host' => 'localhost',
|
||||
'login' => 'user',
|
||||
'password' => 'password',
|
||||
'database' => 'other_one',
|
||||
'prefix' => '',
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* DbConfigTest class
|
||||
*
|
||||
* @package cake
|
||||
* @subpackage cake.tests.cases.console.libs.tasks
|
||||
*/
|
||||
class DbConfigTaskTest extends CakeTestCase {
|
||||
|
||||
/**
|
||||
* setUp method
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function startTest() {
|
||||
$this->Dispatcher =& new TestDbConfigTaskMockShellDispatcher();
|
||||
$this->Task =& new MockDbConfigTask($this->Dispatcher);
|
||||
$this->Task->Dispatch =& new $this->Dispatcher;
|
||||
$this->Task->Dispatch->shellPaths = Configure::read('shellPaths');
|
||||
//$this->Task->Template =& new TemplateTask($this->Task->Dispatch);
|
||||
|
||||
$this->Task->params['working'] = rtrim(APP, '/');
|
||||
$this->Task->databaseClassName = 'TEST_DATABASE_CONFIG';
|
||||
}
|
||||
|
||||
/**
|
||||
* tearDown method
|
||||
*
|
||||
* @return void
|
||||
* @access public
|
||||
*/
|
||||
function endTest() {
|
||||
unset($this->Task, $this->Dispatcher);
|
||||
ClassRegistry::flush();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test the getConfig method.
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testGetConfig() {
|
||||
$this->Task->setReturnValueAt(0, 'in', 'otherOne');
|
||||
$result = $this->Task->getConfig();
|
||||
$this->assertEqual($result, 'otherOne');
|
||||
}
|
||||
|
||||
/**
|
||||
* test that initialize sets the path up.
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testInitialize() {
|
||||
$this->assertTrue(empty($this->Task->path));
|
||||
$this->Task->initialize();
|
||||
$this->assertFalse(empty($this->Task->path));
|
||||
$this->assertEqual($this->Task->path, APP . 'config' . DS);
|
||||
|
||||
}
|
||||
/**
|
||||
* test execute and by extension __interactive
|
||||
*
|
||||
* @return void
|
||||
**/
|
||||
function testExecuteIntoInteractive() {
|
||||
$this->Task->initialize();
|
||||
|
||||
$this->Task->expectOnce('_stop');
|
||||
$this->Task->setReturnValue('in', 'y');
|
||||
$this->Task->setReturnValueAt(0, 'in', 'default');
|
||||
$this->Task->setReturnValueAt(1, 'in', 'n');
|
||||
$this->Task->setReturnValueAt(2, 'in', 'localhost');
|
||||
$this->Task->setReturnValueAt(3, 'in', 'n');
|
||||
$this->Task->setReturnValueAt(4, 'in', 'root');
|
||||
$this->Task->setReturnValueAt(5, 'in', 'password');
|
||||
$this->Task->setReturnValueAt(6, 'in', 'cake_test');
|
||||
$this->Task->setReturnValueAt(7, 'in', 'n');
|
||||
$this->Task->setReturnValueAt(8, 'in', 'y');
|
||||
$this->Task->setReturnValueAt(9, 'in', 'y');
|
||||
$this->Task->setReturnValueAt(10, 'in', 'y');
|
||||
$this->Task->setReturnValueAt(11, 'in', 'n');
|
||||
|
||||
$result = $this->Task->execute();
|
||||
}
|
||||
}
|
||||
?>
|
Loading…
Add table
Add a link
Reference in a new issue