示例#1
0
    /**
     * init()
     *
     * @return Zend_Tool_Project_Context_Zf_ActionMethod
     */
    public function init()
    {
        $this->_actionName = $this->_resource->getAttribute('actionName');

        $this->_resource->setAppendable(false);
        $this->_controllerResource = $this->_resource->getParentResource();
        if (!$this->_controllerResource->getContext() instanceof Zend_Tool_Project_Context_Zf_ControllerFile) {
            // require_once 'Zend/Tool/Project/Context/Exception.php';
            throw new Zend_Tool_Project_Context_Exception('ActionMethod must be a sub resource of a ControllerFile');
        }
        // make the ControllerFile node appendable so we can tack on the actionMethod.
        $this->_resource->getParentResource()->setAppendable(true);

        $this->_controllerPath = $this->_controllerResource->getContext()->getPath();

        /*
         * This code block is now commented, its doing to much for init()
         *
        if ($this->_controllerPath != '' && self::hasActionMethod($this->_controllerPath, $this->_actionName)) {
            // require_once 'Zend/Tool/Project/Context/Exception.php';
            throw new Zend_Tool_Project_Context_Exception('An action named ' . $this->_actionName . 'Action already exists in this controller');
        }
        */

        return $this;
    }
示例#2
0
文件: ActionMethod.php 项目: hjr3/zf2
 /**
  * init()
  *
  * @return Zend_Tool_Project_Context_Zf_ActionMethod
  */
 public function init()
 {
     $this->_actionName = $this->_resource->getAttribute('actionName');
     $this->_resource->setAppendable(false);
     $this->_controllerResource = $this->_resource->getParentResource();
     if (!$this->_controllerResource->getContext() instanceof Zend_Tool_Project_Context_Zf_ControllerFile) {
         throw new Zend_Tool_Project_Context_Exception('ActionMethod must be a sub resource of a ControllerFile');
     }
     // make the ControllerFile node appendable so we can tack on the actionMethod.
     $this->_resource->getParentResource()->setAppendable(true);
     $this->_controllerPath = $this->_controllerResource->getContext()->getPath();
     return $this;
 }
    /**
     * create()
     *
     * @return Zend_Tool_Project_Context_Zf_ActionMethod
     */
    public function create()
    {
        $file = $this->_testApplicationControllerPath;
        
        if (!file_exists($file)) {
            require_once 'Zend/Tool/Project/Context/Exception.php';
            throw new Zend_Tool_Project_Context_Exception(
                'Could not create action within test controller ' . $file
                . ' with action name ' . $this->_forActionName
                );
        }
        
        $actionParam = $this->getForActionName();
        $controllerParam = $this->_resource->getParentResource()->getForControllerName();
        //$moduleParam = null;//
        
        /* @var $controllerDirectoryResource Zend_Tool_Project_Profile_Resource */
        $controllerDirectoryResource = $this->_resource->getParentResource()->getParentResource();
        if ($controllerDirectoryResource->getParentResource()->getName() == 'TestApplicationModuleDirectory') {
            $moduleParam = $controllerDirectoryResource->getParentResource()->getForModuleName();
        } else {
            $moduleParam = 'default';
        }
        
        

        if ($actionParam == 'index' && $controllerParam == 'Index' && $moduleParam == 'default') {
            $assert = '$this->assertQueryContentContains("div#welcome h3", "This is your project\'s main page");';
        } else {
            $assert = <<<EOS
\$this->assertQueryContentContains(
    'div#view-content p',
    'View script for controller <b>' . \$params['controller'] . '</b> and script/action name <b>' . \$params['action'] . '</b>'
    );
EOS;
        }
        
        $codeGenFile = Zend_CodeGenerator_Php_File::fromReflectedFileName($file, true, true);
        $codeGenFile->getClass()->setMethod(array(
            'name' => 'test' . ucfirst($actionParam) . 'Action',
            'body' => <<<EOS
\$params = array('action' => '$actionParam', 'controller' => '$controllerParam', 'module' => '$moduleParam');
\$url = \$this->url(\$this->urlizeOptions(\$params));
\$this->dispatch(\$url);

// assertions
\$this->assertModule(\$params['module']);
\$this->assertController(\$params['controller']);
\$this->assertAction(\$params['action']);
$assert

EOS
            ));

        file_put_contents($file, $codeGenFile->generate());
        
        return $this;
    }
示例#4
0
 /**
  * init()
  *
  * @return Zend_Tool_Project_Context_Filesystem_Abstract
  */
 public function init()
 {
     $parentBaseDirectory = $this->_resource->getParentResource()->getContext()->getPath();
     $this->_baseDirectory = $parentBaseDirectory;
     return $this;
 }