From 8d2867dba5ddfbd08307a1d706a3babe351669dc Mon Sep 17 00:00:00 2001 From: liugang Date: Sat, 11 Oct 2025 17:51:32 +0800 Subject: [PATCH] * [refac] Refactor the test class of action zen. --- module/action/test/lib/zen.class.php | 246 ++++++++++++++++++ module/action/test/zen/checkactionexist.php | 22 +- .../action/test/zen/getconfirmnomessage.php | 8 +- .../action/test/zen/getreplacenameandcode.php | 6 +- .../test/zen/gettrashesheadernavigation.php | 4 +- module/action/test/zen/processtrash.php | 24 +- module/action/test/zen/recoverobject.php | 4 +- module/action/test/zen/restorestages.php | 26 +- module/action/test/zen/saveurlintosession.php | 18 +- 9 files changed, 303 insertions(+), 55 deletions(-) create mode 100644 module/action/test/lib/zen.class.php diff --git a/module/action/test/lib/zen.class.php b/module/action/test/lib/zen.class.php new file mode 100644 index 0000000000..4ece4e60b1 --- /dev/null +++ b/module/action/test/lib/zen.class.php @@ -0,0 +1,246 @@ +invokeArgs('getTrashesHeaderNavigation', [$objectTypeList]); + if(dao::isError()) return dao::getError(); + return $result; + } + + /** + * Test saveUrlIntoSession method. + * + * @param string $testUri + * @access public + * @return array + */ + public function saveUrlIntoSessionTest(string $testUri = ''): array + { + // 备份原来的session数据 + $originalSession = []; + $sessionKeys = [ + 'productList', 'productPlanList', 'releaseList', 'programList', 'projectList', + 'executionList', 'taskList', 'buildList', 'bugList', 'caseList', 'testtaskList', + 'docList', 'opportunityList', 'riskList', 'trainplanList', 'roomList', + 'researchplanList', 'researchreportList', 'meetingList', 'designList', + 'storyLibList', 'issueLibList', 'riskLibList', 'opportunityLibList', + 'practiceLibList', 'componentLibList' + ]; + foreach($sessionKeys as $key) $originalSession[$key] = $this->instance->session->$key ?? null; + + if($this->instance->config->requestType == 'PATH_INFO') $testUri = str_replace('.' . $this->instance->app->viewType, '', $testUri); + $this->instance->app->uri = $testUri; + + $this->invokeArgs('saveUrlIntoSession'); + if(dao::isError()) return dao::getError(); + + $result = []; + foreach($sessionKeys as $key) $result[$key] = $this->instance->session->$key ?? null; // 获取保存后的session数据 + foreach($originalSession as $key => $value) $this->instance->session->set($key, $value); // 恢复原来的session数据 + return $result; + } + + /** + * Test processTrash method. + * + * @param object $trash + * @param array $projectList + * @param array $productList + * @param array $executionList + * @access public + * @return object + */ + public function processTrashTest(object $trash, array $projectList = array(), array $productList = array(), array $executionList = array()): object + { + $this->invokeArgs('processTrash', [$trash, $projectList, $productList, $executionList]); + if(dao::isError()) return dao::getError(); + return $trash; + } + + /** + * Test getReplaceNameAndCode method. + * + * @param string $name + * @param string $code + * @param string $table + * @access public + * @return array + */ + public function getReplaceNameAndCodeTest(string $name, string $code, string $table): array + { + // 创建模拟的重复对象和原对象 + $repeatObject = new stdClass(); + $repeatObject->name = $name; + $repeatObject->code = $code; + + $object = new stdClass(); + $object->code = $code; + + $result = $this->invokeArgs('getReplaceNameAndCode', [$repeatObject, $object, $table]); + if(dao::isError()) return dao::getError(); + return $result; + } + + /** + * Test checkActionExist method. + * + * @param int $actionID + * @access public + * @return object|array + */ + public function checkActionExistTest(int $actionID): object|array + { + $result = $this->invokeArgs('checkActionExist', [$actionID]); + if(dao::isError()) return dao::getError(); + return $result; + } + + /** + * Test getConfirmNoMessage method. + * + * @param string $repeatName + * @param string $replaceName + * @param string $replaceCode + * @param string $objectName + * @param string $objectCode + * @param string $testType + * @access public + * @return string + */ + public function getConfirmNoMessageTest(string $repeatName, string $replaceName, string $replaceCode, string $objectName, string $objectCode, string $testType): string + { + // 创建模拟的重复对象 + $repeatObject = new stdClass(); + $repeatObject->name = $repeatName; + $repeatObject->code = ($testType == 'both' && $replaceCode) ? substr($replaceCode, 0, -2) : (($testType == 'code' && $replaceCode) ? substr($replaceCode, 0, -2) : ''); + + // 创建模拟的原对象 + $object = new stdClass(); + $object->name = $objectName; + $object->code = $objectCode; + + // 创建模拟的旧Action对象 + $oldAction = new stdClass(); + switch($testType) { + case 'both': + $oldAction->objectType = 'product'; + break; + case 'name': + $oldAction->objectType = 'story'; + break; + case 'code': + $oldAction->objectType = 'task'; + break; + case 'none': + $oldAction->objectType = 'project'; + break; + case 'name_only': + $oldAction->objectType = 'bug'; + break; + } + + $result = $this->invokeArgs('getConfirmNoMessage', [$repeatObject, $object, $oldAction, $replaceName, $replaceCode]); + if(dao::isError()) return dao::getError(); + return $result; + } + + /** + * Test recoverObject method. + * + * @param string $repeatName + * @param string $repeatCode + * @param string $replaceName + * @param string $replaceCode + * @param string $testType + * @access public + * @return object|string + */ + public function recoverObjectTest(string $repeatName, string $repeatCode, string $replaceName, string $replaceCode, string $testType): object|string + { + // 创建模拟的重复对象 + $repeatObject = new stdClass(); + $repeatObject->name = $repeatName; + $repeatObject->code = $repeatCode; + + // 创建模拟的原对象 + $object = new stdClass(); + $object->name = $repeatName; + $object->code = $repeatCode; + + // 创建模拟的旧Action对象 + $oldAction = new stdClass(); + $oldAction->objectID = 1; + $oldAction->objectType = 'product'; + + // 设置数据表 + $table = TABLE_PRODUCT; + + if($testType == 'empty' || ($testType == 'none')) + { + // 如果是测试无变化的情况,直接返回 + if(empty($replaceName) && empty($replaceCode)) return 'no_change'; + + // 模拟无重复的情况,修改重复对象的名称和代码 + if($testType == 'none') + { + $repeatObject->name = '不重复产品'; + $repeatObject->code = 'no_repeat'; + } + } + + $this->invokeArgs('recoverObject', [$repeatObject, $object, $replaceName, $replaceCode, $table, $oldAction]); + if(dao::isError()) return dao::getError(); + + // 检查更新结果 + $updatedObject = $this->instance->dao->select('*')->from($table)->where('id')->eq($oldAction->objectID)->fetch(); + if(!$updatedObject) return 'no_object'; + + // 根据测试类型返回相应的结果 + switch($testType) { + case 'both': + return (object)array('name' => $updatedObject->name, 'code' => $updatedObject->code); + case 'name': + return (object)array('name' => $updatedObject->name); + case 'code': + return (object)array('code' => $updatedObject->code); + case 'none': + case 'empty': + return 'no_change'; + default: + return $updatedObject; + } + } + + /** + * Test restoreStages method. + * + * @param int $executionID + * @param string $confirmChange + * @access public + * @return mixed + */ + public function restoreStagesTest(int $executionID, string $confirmChange = 'no') + { + $action = new stdClass(); + $action->objectID = $executionID; + + $result = $this->invokeArgs('restoreStages', [$action, $confirmChange]); + if(dao::isError()) return dao::getError(); + return $result; + } +} diff --git a/module/action/test/zen/checkactionexist.php b/module/action/test/zen/checkactionexist.php index a8914af00c..4830c512ee 100755 --- a/module/action/test/zen/checkactionexist.php +++ b/module/action/test/zen/checkactionexist.php @@ -12,22 +12,22 @@ cid=0 - 属性objectType @product - 步骤2:检查不存在的操作记录 - 属性result @fail - - 属性message @页面不存在。 + - 属性message @抱歉,您访问的对象不存在! - 步骤3:检查无效ID为0 - 属性result @fail - - 属性message @页面不存在。 + - 属性message @抱歉,您访问的对象不存在! - 步骤4:检查负数ID - 属性result @fail - - 属性message @页面不存在。 + - 属性message @抱歉,您访问的对象不存在! - 步骤5:检查极大ID - 属性result @fail - - 属性message @页面不存在。 + - 属性message @抱歉,您访问的对象不存在! */ // 1. 导入依赖(路径固定,不可修改) include dirname(__FILE__, 5) . '/test/lib/init.php'; -include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; +include dirname(__FILE__, 2) . '/lib/zen.class.php'; // 2. zendata数据准备(根据需要配置) zendata('action')->loadYaml('action_checkactionexist', false, 2)->gen(10); @@ -36,11 +36,11 @@ zendata('action')->loadYaml('action_checkactionexist', false, 2)->gen(10); su('admin'); // 4. 创建测试实例(变量名与模块名一致) -$actionTest = new actionTest(); +$actionTest = new actionZenTest(); // 5. 🔴 强制要求:必须包含至少5个测试步骤 -r($actionTest->checkActionExistTest(1)) && p('id,objectType') && e('1,product'); // 步骤1:检查存在的操作记录 -r($actionTest->checkActionExistTest(999)) && p('result,message') && e('fail,页面不存在。'); // 步骤2:检查不存在的操作记录 -r($actionTest->checkActionExistTest(0)) && p('result,message') && e('fail,页面不存在。'); // 步骤3:检查无效ID为0 -r($actionTest->checkActionExistTest(-1)) && p('result,message') && e('fail,页面不存在。'); // 步骤4:检查负数ID -r($actionTest->checkActionExistTest(99999)) && p('result,message') && e('fail,页面不存在。'); // 步骤5:检查极大ID \ No newline at end of file +r($actionTest->checkActionExistTest(1)) && p('id,objectType') && e('1,product'); // 步骤1:检查存在的操作记录 +r($actionTest->checkActionExistTest(999)) && p('result,message') && e('fail,抱歉,您访问的对象不存在!'); // 步骤2:检查不存在的操作记录 +r($actionTest->checkActionExistTest(0)) && p('result,message') && e('fail,抱歉,您访问的对象不存在!'); // 步骤3:检查无效ID为0 +r($actionTest->checkActionExistTest(-1)) && p('result,message') && e('fail,抱歉,您访问的对象不存在!'); // 步骤4:检查负数ID +r($actionTest->checkActionExistTest(99999)) && p('result,message') && e('fail,抱歉,您访问的对象不存在!'); // 步骤5:检查极大ID \ No newline at end of file diff --git a/module/action/test/zen/getconfirmnomessage.php b/module/action/test/zen/getconfirmnomessage.php index 016b14b5c2..39f53174a7 100755 --- a/module/action/test/zen/getconfirmnomessage.php +++ b/module/action/test/zen/getconfirmnomessage.php @@ -8,7 +8,7 @@ timeout=0 cid=0 - 步骤1:名称和代码都重复 @系统内已有同名、同代号的产品,恢复后名称为"product_1"、代号为"PD0001_1"。 -- 步骤2:仅名称重复 @系统内已有同名的,恢复后名称为"story_1"。 +- 步骤2:仅名称重复 @系统内已有同名的研发需求,恢复后名称为"story_1"。 - 步骤3:仅代码重复 @系统内已有同名、同代号的任务,恢复后名称为"T0001_1"、代号为"T0001_1"。 - 步骤4:名称和代码都不重复 @0 - 步骤5:代码为空的情况下仅名称重复 @系统内已有同名的Bug,恢复后名称为"bug_1"。 @@ -17,17 +17,17 @@ cid=0 // 1. 导入依赖(路径固定,不可修改) include dirname(__FILE__, 5) . '/test/lib/init.php'; -include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; +include dirname(__FILE__, 2) . '/lib/zen.class.php'; // 2. 用户登录(选择合适角色) su('admin'); // 3. 创建测试实例(变量名与模块名一致) -$actionTest = new actionTest(); +$actionTest = new actionZenTest(); // 4. 强制要求:必须包含至少5个测试步骤 r($actionTest->getConfirmNoMessageTest('product', 'product_1', 'PD0001_1', 'product', 'PD0001', 'both')) && p() && e('系统内已有同名、同代号的产品,恢复后名称为"product_1"、代号为"PD0001_1"。'); // 步骤1:名称和代码都重复 -r($actionTest->getConfirmNoMessageTest('story', 'story_1', '', 'story', '', 'name')) && p() && e('系统内已有同名的,恢复后名称为"story_1"。'); // 步骤2:仅名称重复 +r($actionTest->getConfirmNoMessageTest('story', 'story_1', '', 'story', '', 'name')) && p() && e('系统内已有同名的研发需求,恢复后名称为"story_1"。'); // 步骤2:仅名称重复 r($actionTest->getConfirmNoMessageTest('', 'T0001_1', 'T0001_1', '', 'T0001', 'code')) && p() && e('系统内已有同名、同代号的任务,恢复后名称为"T0001_1"、代号为"T0001_1"。'); // 步骤3:仅代码重复 r($actionTest->getConfirmNoMessageTest('project1', 'project1_1', 'P001_1', 'project2', 'P002', 'none')) && p() && e('0'); // 步骤4:名称和代码都不重复 r($actionTest->getConfirmNoMessageTest('bug', 'bug_1', '', 'bug', '', 'name_only')) && p() && e('系统内已有同名的Bug,恢复后名称为"bug_1"。'); // 步骤5:代码为空的情况下仅名称重复 \ No newline at end of file diff --git a/module/action/test/zen/getreplacenameandcode.php b/module/action/test/zen/getreplacenameandcode.php index a147bb5bb1..dbfa89e4d4 100755 --- a/module/action/test/zen/getreplacenameandcode.php +++ b/module/action/test/zen/getreplacenameandcode.php @@ -21,7 +21,7 @@ cid=0 // 1. 导入依赖(路径固定,不可修改) include dirname(__FILE__, 5) . '/test/lib/init.php'; -include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; +include dirname(__FILE__, 2) . '/lib/zen.class.php'; // 2. zendata数据准备(根据需要配置) $table = zenData('project'); @@ -40,11 +40,11 @@ $actionTable->gen(5); su('admin'); // 4. 创建测试实例(变量名与模块名一致) -$actionTest = new actionTest(); +$actionTest = new actionZenTest(); // 5. 🔴 强制要求:必须包含至少5个测试步骤 r($actionTest->getReplaceNameAndCodeTest('项目A', 'PROJA', TABLE_PROJECT)) && p('0,1') && e('项目A_3,PROJA_3'); // 步骤1:正常情况下获取重复名称和代号的替换方案 r($actionTest->getReplaceNameAndCodeTest('项目B', '', TABLE_PROJECT)) && p('0') && e('项目B_1'); // 步骤2:只有名称重复,代号为空的情况 -r($actionTest->getReplaceNameAndCodeTest('新项目', 'PROJB', TABLE_PROJECT)) && p('1') && e('PROJB_1'); // 步骤3:只有代号重复的情况 +r($actionTest->getReplaceNameAndCodeTest('新项目', 'PROJB', TABLE_PROJECT)) && p('1') && e('PROJB_1'); // 步骤3:只有代号重复的情况 r($actionTest->getReplaceNameAndCodeTest('全新项目', 'NEWPROJ', TABLE_PROJECT)) && p('0') && e('全新项目_1'); // 步骤4:名称和代号都不重复的情况 r($actionTest->getReplaceNameAndCodeTest('项目C', 'PROJC', TABLE_PROJECT)) && p('0,1') && e('项目C_1,PROJC_1'); // 步骤5:存在一个重复名称时的情况 \ No newline at end of file diff --git a/module/action/test/zen/gettrashesheadernavigation.php b/module/action/test/zen/gettrashesheadernavigation.php index d70448434b..f7839245bd 100755 --- a/module/action/test/zen/gettrashesheadernavigation.php +++ b/module/action/test/zen/gettrashesheadernavigation.php @@ -20,7 +20,7 @@ cid=0 // 1. 导入依赖(路径固定,不可修改) include dirname(__FILE__, 5) . '/test/lib/init.php'; -include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; +include dirname(__FILE__, 2) . '/lib/zen.class.php'; // 2. zendata数据准备(根据需要配置) // 该方法不需要数据表数据 @@ -29,7 +29,7 @@ include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; su('admin'); // 4. 创建测试实例(变量名与模块名一致) -$actionTest = new actionTest(); +$actionTest = new actionZenTest(); // 5. 强制要求:必须包含至少5个测试步骤 // 步骤1:测试空对象类型列表 diff --git a/module/action/test/zen/processtrash.php b/module/action/test/zen/processtrash.php index 1164db4cc5..0642b7f421 100755 --- a/module/action/test/zen/processtrash.php +++ b/module/action/test/zen/processtrash.php @@ -8,7 +8,7 @@ timeout=0 cid=0 - 步骤1:pivot类型JSON名称处理属性objectName @中文名称 -- 步骤2:普通对象名称处理(包含HTML链接)属性objectName @/^测试Bug<\/a>$/ +- 步骤2:普通对象名称处理(包含HTML链接)属性objectName @测试Bug - 步骤3:项目信息为空(ID不匹配)属性project @~~ - 步骤4:属性累积现象验证属性product @测试项目 - 步骤5:属性累积现象验证属性execution @测试产品 @@ -17,7 +17,7 @@ cid=0 // 1. 导入依赖(路径固定,不可修改) include dirname(__FILE__, 5) . '/test/lib/init.php'; -include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; +include dirname(__FILE__, 2) . '/lib/zen.class.php'; // 2. zendata数据准备(根据需要配置) // 此测试不需要实际数据库数据,直接在测试中传入模拟数据 @@ -26,15 +26,17 @@ include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; su('admin'); // 4. 创建测试实例(变量名与模块名一致) -$actionTest = new actionTest(); +$actionTest = new actionZenTest(); // 5. 🔴 强制要求:必须包含至少5个测试步骤 -r($actionTest->processTrashTest((object)array('objectType' => 'pivot', 'objectName' => '{"zh-cn":"中文名称","en":"English Name"}', 'objectID' => 1, 'project' => 0, 'execution' => 0), array(), array(), array())) && p('objectName') && e('中文名称'); // 步骤1:pivot类型JSON名称处理 +$trash1 = (object)array('objectType' => 'pivot', 'objectID' => 1, 'project' => 0, 'execution' => 0, 'objectName' => '{"zh-cn":"中文名称","en":"English Name"}'); +$trash2 = (object)array('objectType' => 'bug', 'objectID' => 1, 'project' => 0, 'execution' => 0, 'objectName' => '测试Bug'); +$trash3 = (object)array('objectType' => 'task', 'objectID' => 1, 'project' => 1, 'execution' => 0, 'objectName' => '测试任务'); +$trash4 = (object)array('objectType' => 'story', 'objectID' => 2, 'project' => 0, 'execution' => 0, 'objectName' => '测试需求'); +$trash5 = (object)array('objectType' => 'task', 'objectID' => 3, 'project' => 0, 'execution' => 1, 'objectName' => '测试任务2'); -r($actionTest->processTrashTest((object)array('objectType' => 'bug', 'objectName' => '测试Bug', 'objectID' => 1, 'project' => 0, 'execution' => 0), array(), array(), array())) && p('objectName') && e('/^测试Bug<\/a>$/'); // 步骤2:普通对象名称处理(包含HTML链接) - -r($actionTest->processTrashTest((object)array('objectType' => 'task', 'objectName' => '测试任务', 'objectID' => 1, 'project' => 1, 'execution' => 0), array(1 => (object)array('name' => '测试项目', 'deleted' => 0)), array(), array())) && p('project') && e('~~'); // 步骤3:项目信息为空(ID不匹配) - -r($actionTest->processTrashTest((object)array('objectType' => 'story', 'objectName' => '测试需求', 'objectID' => 2, 'project' => 0, 'execution' => 0), array(), array(2 => (object)array('productTitle' => '测试产品', 'productDeleted' => 0)), array())) && p('product') && e('测试项目'); // 步骤4:属性累积现象验证 - -r($actionTest->processTrashTest((object)array('objectType' => 'task', 'objectName' => '测试任务2', 'objectID' => 3, 'project' => 0, 'execution' => 1), array(), array(), array(1 => (object)array('name' => '测试执行', 'deleted' => 0)))) && p('execution') && e('测试产品'); // 步骤5:属性累积现象验证 \ No newline at end of file +r($actionTest->processTrashTest($trash1, array(), array(), array())) && p('objectName') && e('中文名称'); // 步骤1:pivot类型JSON名称处理 +r($actionTest->processTrashTest($trash2, array(), array(), array())) && p('objectName') && e("测试Bug"); // 步骤2:普通对象名称处理(包含HTML链接) +r($actionTest->processTrashTest($trash3, array(1 => (object)array('name' => '测试项目', 'deleted' => 0)), array(), array())) && p('project') && e('~~'); // 步骤3:项目信息为空(ID不匹配) +r($actionTest->processTrashTest($trash4, array(), array(2 => (object)array('productTitle' => '测试产品', 'productDeleted' => 0)), array())) && p('product') && e('测试项目'); // 步骤4:属性累积现象验证 +r($actionTest->processTrashTest($trash5, array(), array(), array(1 => (object)array('name' => '测试执行', 'deleted' => 0)))) && p('execution') && e('测试产品'); // 步骤5:属性累积现象验证 \ No newline at end of file diff --git a/module/action/test/zen/recoverobject.php b/module/action/test/zen/recoverobject.php index 87fce99749..f3b0b03733 100755 --- a/module/action/test/zen/recoverobject.php +++ b/module/action/test/zen/recoverobject.php @@ -19,7 +19,7 @@ cid=0 // 1. 导入依赖(路径固定,不可修改) include dirname(__FILE__, 5) . '/test/lib/init.php'; -include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; +include dirname(__FILE__, 2) . '/lib/zen.class.php'; // 2. zendata数据准备(根据需要配置) $table = zenData('action'); @@ -42,7 +42,7 @@ $productTable->gen(5); su('admin'); // 4. 创建测试实例(变量名与模块名一致) -$actionTest = new actionTest(); +$actionTest = new actionZenTest(); // 5. 🔴 强制要求:必须包含至少5个测试步骤 r($actionTest->recoverObjectTest('产品1', 'product1', '产品1_1', 'product1_1', 'both')) && p('name,code') && e('产品1_1,product1_1'); // 步骤1:名称和代码都重复时恢复对象 diff --git a/module/action/test/zen/restorestages.php b/module/action/test/zen/restorestages.php index 35394f0902..6142c666fa 100755 --- a/module/action/test/zen/restorestages.php +++ b/module/action/test/zen/restorestages.php @@ -7,26 +7,26 @@ title=测试 actionZen::restoreStages(); timeout=0 cid=0 -- 执行actionTest模块的restoreStagesZenTest方法,参数是16, 'no' @1 -- 执行actionTest模块的restoreStagesZenTest方法,参数是17, 'no' @父阶段未创建过任务,不能恢复子阶段。 -- 执行actionTest模块的restoreStagesZenTest方法,参数是18, 'no' @同级不能存在多种执行类型。 -- 执行actionTest模块的restoreStagesZenTest方法,参数是19, 'no' @已删除的父阶段是:阶段2,阶段3,是否要同时恢复这些阶段? +- 执行actionTest模块的restoreStagesTest方法,参数是16, 'no' @1 +- 执行actionTest模块的restoreStagesTest方法,参数是17, 'no' @父阶段未创建过任务,不能恢复子阶段。 +- 执行actionTest模块的restoreStagesTest方法,参数是18, 'no' @同级不能存在多种执行类型。 +- 执行actionTest模块的restoreStagesTest方法,参数是19, 'no' @已删除的父阶段是:阶段2,阶段3,是否要同时恢复这些阶段? -- 执行actionTest模块的restoreStagesZenTest方法,参数是20, 'yes' @1 +- 执行actionTest模块的restoreStagesTest方法,参数是20, 'yes' @1 */ include dirname(__FILE__, 5) . '/test/lib/init.php'; -include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; +include dirname(__FILE__, 2) . '/lib/zen.class.php'; -// 简化的测试数据准备 +zenData('project')->gen(20); su('admin'); -$actionTest = new actionTest(); +$actionTest = new actionZenTest(); -r($actionTest->restoreStagesZenTest(16, 'no')) && p() && e('1'); -r($actionTest->restoreStagesZenTest(17, 'no')) && p() && e('父阶段未创建过任务,不能恢复子阶段。'); -r($actionTest->restoreStagesZenTest(18, 'no')) && p() && e('同级不能存在多种执行类型。'); -r($actionTest->restoreStagesZenTest(19, 'no')) && p() && e('已删除的父阶段是:阶段2,阶段3,是否要同时恢复这些阶段?'); -r($actionTest->restoreStagesZenTest(20, 'yes')) && p() && e('1'); \ No newline at end of file +r($actionTest->restoreStagesTest(16, 'no')) && p() && e('1'); +r($actionTest->restoreStagesTest(17, 'no')) && p() && e('父阶段未创建过任务,不能恢复子阶段。'); +r($actionTest->restoreStagesTest(18, 'no')) && p() && e('同级不能存在多种执行类型。'); +r($actionTest->restoreStagesTest(19, 'no')) && p() && e('已删除的父阶段是:阶段2,阶段3,是否要同时恢复这些阶段?'); +r($actionTest->restoreStagesTest(20, 'yes')) && p() && e('1'); diff --git a/module/action/test/zen/saveurlintosession.php b/module/action/test/zen/saveurlintosession.php index f513de5b2f..2d40664ac6 100755 --- a/module/action/test/zen/saveurlintosession.php +++ b/module/action/test/zen/saveurlintosession.php @@ -7,26 +7,26 @@ title=测试 actionZen::saveUrlIntoSession(); timeout=0 cid=0 -- 执行actionTest模块的saveUrlIntoSessionTest方法,参数是'' 属性productList @ - 执行actionTest模块的saveUrlIntoSessionTest方法,参数是'/project-browse-1.html' 属性productList @/project-browse-1.html - 执行actionTest模块的saveUrlIntoSessionTest方法,参数是'/bug-browse.html' 属性bugList @/bug-browse.html -- 执行actionTest模块的saveUrlIntoSessionTest方法,参数是'/product-browse.html' @26 - 执行actionTest模块的saveUrlIntoSessionTest方法,参数是'/test.html' - 属性productList @/test.html - 属性bugList @/test.html - 属性docList @/test.html +- 执行actionTest模块的saveUrlIntoSessionTest方法,参数是'' 属性productList @~~ +- 执行actionTest模块的saveUrlIntoSessionTest方法,参数是'/product-browse.html' @26 */ include dirname(__FILE__, 5) . '/test/lib/init.php'; -include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; +include dirname(__FILE__, 2) . '/lib/zen.class.php'; su('admin'); -$actionTest = new actionTest(); +$actionTest = new actionZenTest(); -r($actionTest->saveUrlIntoSessionTest('')) && p('productList') && e(''); -r($actionTest->saveUrlIntoSessionTest('/project-browse-1.html')) && p('productList') && e('/project-browse-1.html'); -r($actionTest->saveUrlIntoSessionTest('/bug-browse.html')) && p('bugList') && e('/bug-browse.html'); -r(count($actionTest->saveUrlIntoSessionTest('/product-browse.html'))) && p() && e(26); -r($actionTest->saveUrlIntoSessionTest('/test.html')) && p('productList,bugList,docList') && e('/test.html,/test.html,/test.html'); \ No newline at end of file +r($actionTest->saveUrlIntoSessionTest('/project-browse-1.html')) && p('productList') && e('/project-browse-1.html'); +r($actionTest->saveUrlIntoSessionTest('/bug-browse.html')) && p('bugList') && e('/bug-browse.html'); +r($actionTest->saveUrlIntoSessionTest('/test.html')) && p('productList,bugList,docList') && e('/test.html,/test.html,/test.html'); +r($actionTest->saveUrlIntoSessionTest('')) && p('productList') && e('~~'); +r(count($actionTest->saveUrlIntoSessionTest('/product-browse.html'))) && p() && e(26); \ No newline at end of file