Files
EasySoft-ZenTaoPMS/test/class/editor.class.php
2023-03-07 15:02:29 +08:00

399 lines
16 KiB
PHP

<?php
class editorTest
{
/**
* Construct
*
* @access public
* @return void
*/
public function __construct()
{
global $tester;
$this->objectModel = $tester->loadModel('editor');
}
/**
* Test for get module files.
*
* @param string $moduleName
* @access public
* @return 1|0
*/
public function getModuleFilesTest($moduleName)
{
$moduleFiles = $this->objectModel->getModuleFiles($moduleName);
$modulePath = $this->objectModel->app->getModulePath('', $moduleName);
if(!isset($moduleFiles[$modulePath])) return 0;
if(!isset($moduleFiles[$modulePath][$modulePath . 'model.php'])) return 0;
if(!isset($moduleFiles[$modulePath][$modulePath . 'model.php'][$modulePath . 'model.php/create'])) return 0;
return 1;
}
/**
* Test for get extension files.
*
* @param string $moduleName
* @access public
* @return 1|0
*/
public function getExtensionFilesTest($moduleName)
{
$files = $this->objectModel->getExtensionFiles($moduleName);
$edition = $this->objectModel->config->edition;
if($edition == 'open') return 1;
$extensionRoot = $this->objectModel->app->getExtensionRoot();
$extensionPath = $extensionRoot . $edition . DS . $moduleName . DS . 'ext' . DS . 'control' . DS;
if(!isset($files[$edition][$extensionPath])) return 0;
return 1;
}
/**
* Test for get two grade files.
*
* @access public
* @return 1|0
*/
public function getTwoGradeFilesTest()
{
$extensionFullDir = $this->objectModel->app->getModulePath('', 'todo');
$files = $this->objectModel->getTwoGradeFiles($extensionFullDir);
if(!isset($files[$extensionFullDir . 'lang'])) return 0;
if(!isset($files[$extensionFullDir . 'lang'][$extensionFullDir . 'lang' . DS . 'zh-cn.php'])) return 0;
return 1;
}
/**
* Test for analysis.
*
* @access public
* @return 1|0
*/
public function analysisTest()
{
$fileName = $this->objectModel->app->getModulePath('', 'todo') . 'control.php';
$objects = $this->objectModel->analysis($fileName);
if(!isset($objects[$fileName . '/create'])) return 0;
return 1;
}
/**
* Test for print tree.
*
* @access public
* @return 1|0
*/
public function printTreeTest()
{
$files = $this->objectModel->getModuleFiles('todo');
$tree = $this->objectModel->printTree($files);
if(strpos($tree, 'extendTree') === false) return 0;
if(strpos($tree, 'L2hvbWUvei9zaXRlcy96ZW50YW9tYXgvbW9kdWxlL3RvZG8vbW9kZWwucGhw') === false) return 0;
if(strpos($tree, 'L2hvbWUvei9zaXRlcy96ZW50YW9tYXgvbW9kdWxlL3RvZG8vbW9kZWwucGhwL2JhdGNoQ3JlYXRl') === false) return 0;
if(strpos($tree, "target='editWin'") === false) return 0;
return 1;
}
/**
* Test for add link for dir.
*
* @access public
* @return string
*/
public function addLink4DirTest()
{
$result = '';
$modulePath = $this->objectModel->app->getModulePath('', 'todo');
$controlPath = $modulePath . 'control.php';
$link = $this->objectModel->addLink4Dir($controlPath);
$result .= (strpos($link, 'newPage') === false ? 0 : 1) . ',';
$modelPath = $modulePath . 'model.php';
$link = $this->objectModel->addLink4Dir($modelPath);
$result .= (strpos($link, 'newMethod') === false ? 0 : 1) . ',';
$langPath = $modulePath . 'lang';
$link = $this->objectModel->addLink4Dir($langPath);
$result .= (strpos($link, 'lang') === false ? 0 : 1) . ',';
$edition = $this->objectModel->config->edition;
if($edition == 'open') return $result . '1,1,1,1,1';
$extensionRoot = $this->objectModel->app->getExtensionRoot();
$extensionPath = $extensionRoot . $edition . DS . 'todo' . DS . 'ext' . DS;
$extControlPath = $extensionPath . 'control';
$link = $this->objectModel->addLink4Dir($extControlPath);
$result .= (strpos($link, 'newExtend') === false ? 0 : 1) . ',';
$extModelPath = $extensionPath . 'model';
$link = $this->objectModel->addLink4Dir($extModelPath);
$result .= (strpos($link, 'newExtend') === false ? 0 : 1) . ',';
$extJSPath = $extensionPath . 'js';
$link = $this->objectModel->addLink4Dir($extJSPath);
$result .= (strpos($link, 'newJS') === false ? 0 : 1) . ',';
$extCSSPath = $extensionPath . 'css';
$link = $this->objectModel->addLink4Dir($extCSSPath);
$result .= (strpos($link, 'newCSS') === false ? 0 : 1) . ',';
$extLangPath = $extensionPath . 'lang';
$link = $this->objectModel->addLink4Dir($extLangPath);
$result .= (strpos($link, 'lang') === false ? 0 : 1);
return $result;
}
/**
* Test for add link for file.
*
* @access public
* @return string
*/
public function addLink4FileTest()
{
$result = '';
$modulePath = $this->objectModel->app->getModulePath('', 'todo');
$viewPath = $modulePath . 'view' . DS . 'create.html.php';
$link = $this->objectModel->addLink4File($viewPath, 'create.html.php');
$result .= ((strpos($link, 'override') === false || strpos($link, 'newHook') === false) ? 0 : 1) . ',';
$controlPath = $modulePath . 'control.php' . DS . 'create';
$link = $this->objectModel->addLink4File($controlPath, 'create');
$result .= (strpos($link, 'extendControl') === false ? 0 : 1) . ',';
$modelPath = $modulePath . 'model.php' . DS . 'create';
$link = $this->objectModel->addLink4File($modelPath, 'create');
$result .= (strpos($link, 'extendModel') === false ? 0 : 1) . ',';
$langPath = $modulePath . 'lang' . DS . 'zh-cn.php';
$link = $this->objectModel->addLink4File($langPath, 'zh-cn.php');
$result .= ((strpos($link, 'newzh_cn') === false || strpos($link, 'extendOther') === false) ? 0 : 1) . ',';
$configPath = $modulePath . 'config.php';
$link = $this->objectModel->addLink4File($configPath, 'config.php');
$result .= ((strpos($link, 'newConfig') === false || strpos($link, 'extendOther') === false) ? 0 : 1) . ',';
$edition = $this->objectModel->config->edition;
if($edition == 'open') return $result . '1,1,1,1,1,1';
$extensionRoot = $this->objectModel->app->getExtensionRoot();
$extensionPath = $extensionRoot . $edition . DS . 'todo' . DS . 'ext' . DS;
$extControlPath = $extensionPath . 'control' . DS . 'create.php';
$link = $this->objectModel->addLink4File($extControlPath, 'create.php');
$result .= ((strpos($link, 'delete') === false || strpos($link, 'edit') === false) ? 0 : 1) . ',';
$extModelPath = $extensionPath . 'model' . DS . 'zentaobiz.class.php';
$link = $this->objectModel->addLink4File($extModelPath, 'zentaobiz.class.php');
$result .= ((strpos($link, 'delete') === false || strpos($link, 'edit') === false) ? 0 : 1) . ',';
$extJSPath = $extensionPath . 'js' . DS . 'create' . DS . 'zentaobiz.js';
$link = $this->objectModel->addLink4File($extJSPath, 'zentaobiz.js');
$result .= ((strpos($link, 'delete') === false || strpos($link, 'edit') === false) ? 0 : 1) . ',';
$extCSSPath = $extensionPath . 'css' . DS . 'create' . DS . 'zentaobiz.css';
$link = $this->objectModel->addLink4File($extCSSPath, 'zentaobiz.css');
$result .= ((strpos($link, 'delete') === false || strpos($link, 'edit') === false) ? 0 : 1) . ',';
$extLangPath = $extensionPath . 'lang' . DS . 'zh-cn' . DS . 'zentaobiz.php';
$link = $this->objectModel->addLink4File($extLangPath, 'zentaobiz.php');
$result .= ((strpos($link, 'delete') === false || strpos($link, 'edit') === false) ? 0 : 1) . ',';
$extConfigPath = $extensionPath . 'config' . DS . 'zentaobiz.php';
$link = $this->objectModel->addLink4File($extConfigPath, 'zentaobiz.php');
$result .= ((strpos($link, 'delete') === false || strpos($link, 'edit') === false) ? 0 : 1);
return $result;
}
/**
* Test for get extend link.
*
* @access public
* @return 1|0
*/
public function getExtendLinkTest()
{
$modulePath = $this->objectModel->app->getModulePath('', 'todo');
$viewPath = $modulePath . 'view' . DS . 'create.html.php';
$link = $this->objectModel->getExtendLink($viewPath, 'extendOther');
return (strpos($link, 'edit') !== false && strpos($link, 'extendOther') !== false) ? 1 : 0;
}
/**
* Test for get api link.
*
* @access public
* @return 1|0
*/
public function getAPILinkTest()
{
$modulePath = $this->objectModel->app->getModulePath('', 'todo');
$modelPath = $modulePath . 'model.php' . DS . 'create';
$link = $this->objectModel->getAPILink($modelPath, 'extendModel');
return (strpos($link, 'debug') !== false && strpos($link, 'extendModel') !== false) ? 1 : 0;
}
/**
* Test for extend model.
*
* @access public
* @return 1|0
*/
public function extendModelTest()
{
$modulePath = $this->objectModel->app->getModulePath('', 'todo');
$modelPath = $modulePath . 'model.php' . DS . 'create';
$content = $this->objectModel->extendModel($modelPath);
return strpos($content, 'public function create(') === false ? 0 : 1;
}
/**
* Test for extend control.
*
* @access public
* @return string
*/
public function extendControlTest()
{
$result = '';
$modulePath = $this->objectModel->app->getModulePath('', 'todo');
$filePath = $modulePath . 'control.php' . DS . 'create';
$content = $this->objectModel->extendControl($filePath, 'yes');
$result .= strpos($content, 'class mytodo extends todo') !== false ? '1,' : '0,';
$content = $this->objectModel->extendControl($filePath, 'no');
$result .= strpos($content, 'class todo extends control') !== false ? 1 : 0;
return $result;
}
/**
* Test for new control.
*
* @access public
* @return 1|0
*/
public function newControlTest()
{
$filePath = $this->objectModel->app->getModulePath('', 'todo') . 'control.php' . DS . 'create';
$content = $this->objectModel->newControl($filePath);
return (strpos($content, 'class todo extends control') !== false && strpos($content, 'public function create(') !== false) ? 1 : 0;
}
/**
* Test for get param.
*
* @access public
* @return 1|0
*/
public function getParamTest()
{
$modulePath = $this->objectModel->app->getModulePath('', 'todo') . 'control.php';
include $modulePath;
$params = $this->objectModel->getParam('todo', 'create');
return $params == "\$date='today', \$userID='', \$from='todo'" ? 1 : 0;
}
/**
* Test for get method code.
*
* @access public
* @return 1|0
*/
public function getMethodCodeTest()
{
$modulePath = $this->objectModel->app->getModulePath('', 'todo') . 'control.php';
include $modulePath;
$code = $this->objectModel->getMethodCode('todo', 'create');
return strpos($code, "public function create(\$date = 'today', \$userID = '', \$from = 'todo')") !== false ? 1 : 0;
}
/**
* Test for get save path.
*
* @access public
* @return string
*/
public function getSavePathTest()
{
$_POST['fileName'] = 'test.php';
$result = '';
$modulePath = $this->objectModel->app->getModulePath('', 'todo');
$extPath = $this->objectModel->app->getExtensionRoot() . 'custom' . DS;
$filePath = $modulePath . 'model.php' . DS . 'create';
$path = $this->objectModel->getSavePath($filePath, 'extendModel');
$result .= $path == $extPath . 'todo' . DS . 'ext' . DS . 'model' . DS . 'test.php' ? '1,' : '0,';
$filePath = $modulePath . 'control.php' . DS . 'create';
$path = $this->objectModel->getSavePath($filePath, 'extendControl');
$result .= $path == $extPath . 'todo' . DS . 'ext' . DS . 'control' . DS . 'create.php' ? '1,' : '0,';
$filePath = $modulePath . 'view' . DS . 'create.html.php';
$path = $this->objectModel->getSavePath($filePath, 'override');
$result .= $path == $extPath . 'todo' . DS . 'ext' . DS . 'view' . DS . 'create.html.php' ? '1,' : '0,';
$filePath = $modulePath . 'config.php';
$path = $this->objectModel->getSavePath($filePath, 'extendOther');
$result .= $path == $extPath . 'todo' . DS . 'ext' . DS . 'config' . DS . 'test.php' ? '1,' : '0,';
$filePath = $modulePath . 'lang' . DS . 'zh-cn.php';
$path = $this->objectModel->getSavePath($filePath, 'extendOther');
$result .= $path == $extPath . 'todo' . DS . 'ext' . DS . 'lang' . DS . 'zh-cn' . DS . 'test.php' ? '1,' : '0,';
$_POST['fileName'] = 'create.html.hook.php';
$filePath = $modulePath . 'view' . DS . 'create.html.php';
$path = $this->objectModel->getSavePath($filePath, 'newhook');
$result .= $path == $extPath . 'todo' . DS . 'ext' . DS . 'view' . DS . 'create.html.hook.php' ? '1,' : '0,';
$_POST['fileName'] = 'test.php';
$filePath = $modulePath . 'control.php';
$path = $this->objectModel->getSavePath($filePath, 'newmethod');
$result .= $path == $extPath . 'todo' . DS . 'ext' . DS . 'control' . DS . 'test.php' ? '1,' : '0,';
$filePath = $extPath . 'todo' . DS . 'ext' . DS . 'control';
$path = $this->objectModel->getSavePath($filePath, 'newextend');
$result .= $path == $extPath . 'todo' . DS . 'ext' . DS . 'control' . DS . 'test.php' ? '1,' : '0,';
$filePath = $modulePath . 'config.php';
$path = $this->objectModel->getSavePath($filePath, 'newconfig');
$result .= $path == $extPath . 'todo' . DS . 'ext' . DS . 'config' . DS . 'test.php' ? '1,' : '0,';
$_POST['fileName'] = 'test.js';
$filePath = $extPath . 'todo' . DS . 'ext' . DS . 'js' . DS . 'create' . DS;
$path = $this->objectModel->getSavePath($filePath, 'newJS');
$result .= $path == $extPath . 'todo' . DS . 'ext' . DS . 'js' . DS . 'create' . DS . 'test.js' ? '1,' : '0,';
$_POST['fileName'] = 'test.css';
$filePath = $extPath . 'todo' . DS . 'ext' . DS . 'css' . DS . 'create' . DS;
$path = $this->objectModel->getSavePath($filePath, 'newCSS');
$result .= $path == $extPath . 'todo' . DS . 'ext' . DS . 'css' . DS . 'create' . DS . 'test.css' ? '1' : '0';
return $result;
}
/**
* Test for get class name by path.
*
* @access public
* @return string
*/
public function getClassNameByPathTest()
{
$modulePath = $this->objectModel->app->getModulePath('', 'todo');
$extPath = $this->objectModel->app->getExtensionRoot() . 'custom' . DS;
$result = '';
$filePath = $modulePath . 'model.php' . DS . 'create';
$className = $this->objectModel->getClassNameByPath($filePath);
$result .= $className == 'todo' ? '1,' : '0,';
$filePath = $extPath . 'todo' . DS . 'ext' . DS . 'control';
$className = $this->objectModel->getClassNameByPath($filePath);
$result .= $className == 'todo' ? '1' : '0';
return $result;
}
}