diff -r 5e7a0fedabdf -r 877f952ae2bd web/lib/Zend/Tool/Project/Provider/Action.php --- a/web/lib/Zend/Tool/Project/Provider/Action.php Thu Mar 21 17:31:31 2013 +0100 +++ b/web/lib/Zend/Tool/Project/Provider/Action.php Thu Mar 21 19:50:53 2013 +0100 @@ -15,9 +15,9 @@ * @category Zend * @package Zend_Tool * @subpackage Framework - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License - * @version $Id: Action.php 20851 2010-02-02 21:45:51Z ralph $ + * @version $Id: Action.php 24593 2012-01-05 20:35:02Z matthew $ */ /** @@ -33,7 +33,7 @@ /** * @category Zend * @package Zend_Tool - * @copyright Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com) + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Tool_Project_Provider_Action @@ -92,7 +92,7 @@ if ($controllerFile == null) { throw new Zend_Tool_Project_Provider_Exception('Controller ' . $controllerName . ' was not found.'); } - + return (($controllerFile->search(array('actionMethod' => array('actionName' => $actionName)))) instanceof Zend_Tool_Project_Profile_Resource); } @@ -131,33 +131,50 @@ $this->_loadProfile(); + // get request/response object + $request = $this->_registry->getRequest(); + $response = $this->_registry->getResponse(); + + // determine if testing is enabled in the project + require_once 'Zend/Tool/Project/Provider/Test.php'; + $testingEnabled = Zend_Tool_Project_Provider_Test::isTestingEnabled($this->_loadedProfile); + + if ($testingEnabled && !Zend_Tool_Project_Provider_Test::isPHPUnitAvailable()) { + $testingEnabled = false; + $response->appendContent( + 'Note: PHPUnit is required in order to generate controller test stubs.', + array('color' => array('yellow')) + ); + } + // Check that there is not a dash or underscore, return if doesnt match regex if (preg_match('#[_-]#', $name)) { throw new Zend_Tool_Project_Provider_Exception('Action names should be camel cased.'); } - + $originalName = $name; $originalControllerName = $controllerName; - + // ensure it is camelCase (lower first letter) $name = strtolower(substr($name, 0, 1)) . substr($name, 1); - + // ensure controller is MixedCase $controllerName = ucfirst($controllerName); - + if (self::hasResource($this->_loadedProfile, $name, $controllerName, $module)) { throw new Zend_Tool_Project_Provider_Exception('This controller (' . $controllerName . ') already has an action named (' . $name . ')'); } - - $actionMethod = self::createResource($this->_loadedProfile, $name, $controllerName, $module); + + $actionMethodResource = self::createResource($this->_loadedProfile, $name, $controllerName, $module); - // get request/response object - $request = $this->_registry->getRequest(); - $response = $this->_registry->getResponse(); - + $testActionMethodResource = null; + if ($testingEnabled) { + $testActionMethodResource = Zend_Tool_Project_Provider_Test::createApplicationResource($this->_loadedProfile, $controllerName, $name, $module); + } + // alert the user about inline converted names $tense = (($request->isPretend()) ? 'would be' : 'is'); - + if ($name !== $originalName) { $response->appendContent( 'Note: The canonical action name that ' . $tense @@ -166,7 +183,7 @@ array('color' => array('yellow')) ); } - + if ($controllerName !== $originalControllerName) { $response->appendContent( 'Note: The canonical controller name that ' . $tense @@ -175,20 +192,31 @@ array('color' => array('yellow')) ); } - + unset($tense); - + if ($request->isPretend()) { $response->appendContent( 'Would create an action named ' . $name . - ' inside controller at ' . $actionMethod->getParentResource()->getContext()->getPath() + ' inside controller at ' . $actionMethodResource->getParentResource()->getContext()->getPath() ); + + if ($testActionMethodResource) { + $response->appendContent('Would create an action test in ' . $testActionMethodResource->getParentResource()->getContext()->getPath()); + } + } else { $response->appendContent( 'Creating an action named ' . $name . - ' inside controller at ' . $actionMethod->getParentResource()->getContext()->getPath() + ' inside controller at ' . $actionMethodResource->getParentResource()->getContext()->getPath() ); - $actionMethod->create(); + $actionMethodResource->create(); + + if ($testActionMethodResource) { + $response->appendContent('Creating an action test in ' . $testActionMethodResource->getParentResource()->getContext()->getPath()); + $testActionMethodResource->create(); + } + $this->_storeProfile(); }