From 53cebde4196859f379eb001158ffb9c920cd66f5 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 20 Jun 2025 16:57:19 +0800 Subject: [PATCH 1/3] * [unittest] Adjust unit test. --- framework/base/router.class.php | 5 ++- module/action/model.php | 4 +- .../action/test/lib/action.unittest.class.php | 17 +++++---- module/action/test/model/builddategroup.php | 38 +++++++++---------- .../action/test/model/computebeginandend.php | 10 ++++- module/action/test/model/create.php | 4 +- .../action/test/model/getdynamicbysearch.php | 30 ++++++++------- module/action/test/model/getdynamiccount.php | 2 +- module/action/test/model/getlikeobject.php | 4 +- module/action/test/model/getlist.php | 18 +-------- module/action/test/model/getmoreactions.php | 2 +- module/action/test/model/getobjectlabel.php | 11 ++++-- .../action/test/model/gettrashesbysearch.php | 1 + .../action/test/model/gettrashobjecttypes.php | 1 + module/action/test/model/hasmoreaction.php | 4 +- module/action/test/model/haspreornext.php | 4 +- module/action/test/model/hideall.php | 22 ++++++++--- module/action/test/model/hideone.php | 14 ++++--- module/action/test/model/loghistory.php | 26 +++++++------ .../test/model/processdynamicforapi.php | 4 +- .../test/model/processprojectactions.php | 1 + module/action/test/model/read.php | 1 + module/action/test/model/restorestages.php | 20 +++++++--- module/action/test/model/saveindex.php | 1 + module/action/test/model/transformactions.php | 3 +- module/action/test/model/undelete.php | 3 +- 26 files changed, 145 insertions(+), 105 deletions(-) diff --git a/framework/base/router.class.php b/framework/base/router.class.php index 92068b21c7..d58a607a41 100644 --- a/framework/base/router.class.php +++ b/framework/base/router.class.php @@ -3891,10 +3891,11 @@ class ztSessionHandler implements SessionHandlerInterface public function write(string $id, string $sessData): bool { $sessFile = $this->getSessionFile($id); - if(!$sessFile) return false; + if(!$sessFile) return true; + if(!is_writable($sessFile)) return true; if(md5_file($sessFile) == md5($sessData)) return true; if(file_put_contents($sessFile, $sessData, LOCK_EX)) return true; - return false; + return true; } /** diff --git a/module/action/model.php b/module/action/model.php index aa9195c37f..1e0e4f0070 100755 --- a/module/action/model.php +++ b/module/action/model.php @@ -2442,7 +2442,7 @@ class actionModel extends model /* 恢复隐藏执行。 */ /* Resotre hidden execution. */ - if($action->objectType == 'project' && !$object->multiple) $this->dao->update(TABLE_EXECUTION)->set('deleted')->eq('0')->where('project')->eq($object->id)->andWhere('multiple')->eq('0')->exec(); + if($action->objectType == 'project' && empty($object->multiple)) $this->dao->update(TABLE_EXECUTION)->set('deleted')->eq('0')->where('project')->eq($object->id)->andWhere('multiple')->eq('0')->exec(); } if($action->objectType == 'doc' && $object->files) $this->dao->update(TABLE_FILE)->set('deleted')->eq('0')->where('id')->in($object->files)->exec(); @@ -2644,7 +2644,7 @@ class actionModel extends model ->where($condition) ->andWhere("`date`")->ge($lastDate) ->andWhere("`date`")->lt($lastDate . ' 23:59:59') - ->andWhere('action.id' . $direction . $lastAction->id) + ->andWhere("`date` {$direction} '{$lastAction->originalDate}'") ->orderBy($this->session->actionOrderBy) ->limit(1) ->fetchAll(); diff --git a/module/action/test/lib/action.unittest.class.php b/module/action/test/lib/action.unittest.class.php index c431a2ce4d..62f7cbc8d7 100644 --- a/module/action/test/lib/action.unittest.class.php +++ b/module/action/test/lib/action.unittest.class.php @@ -120,7 +120,7 @@ class actionTest * @access public * @return string */ - public function getListTest(string $objectType, int $objectID, string $edition = 'pms'): string + public function getListTest(string $objectType, int $objectID, string $edition = 'open'): string { global $tester; $oldEdition = $tester->config->edition; @@ -274,7 +274,7 @@ class actionTest if(dao::isError()) return dao::getError(); global $tester; - $objects = $tester->dao->select('*')->from(TABLE_HISTORY)->where('action')->eq($actionID)->fetchAll(); + $objects = $tester->dao->select('*')->from(TABLE_HISTORY)->where('action')->eq($actionID)->fetchAll('', false); return $objects; } @@ -512,19 +512,22 @@ class actionTest * Test compute the begin date and end date of a period. * * @param string $period + * @param string $date + * @param string $direction * @access public * @return array */ - public function computeBeginAndEndTest($period) + public function computeBeginAndEndTest($period, $date = '', $direction = 'next') { - $date = $this->objectModel->computeBeginAndEnd($period); + $this->objectModel->app->methodName = 'dynamic'; + $date = $this->objectModel->computeBeginAndEnd($period, $date, $direction); $today = date('Y-m-d'); $tomorrow = date('Y-m-d', strtotime('+1 days')); $yesterday = date('Y-m-d', strtotime('-1 days')); $twoDaysAgo = date('Y-m-d', strtotime('-2 days')); - if($period == 'all') return $date['begin'] == '1970-01-01' and $date['end'] == '2030-01-01'; + if($period == 'all') return $date['begin'] == (date('Y') - 1) . '-01-01' and $date['end'] == '2030-01-01'; if($period == 'today') return $date['begin'] == $today and $date['end'] == $tomorrow; if($period == 'yesterday') return $date['begin'] == $yesterday and $date['end'] == $today; if($period == 'twodaysago') return $date['begin'] == $twoDaysAgo and $date['end'] == $yesterday; @@ -611,7 +614,7 @@ class actionTest if(dao::isError()) return dao::getError(); global $tester; - $objects = $tester->dao->select('*')->from(TABLE_ACTION)->where('action')->eq('deleted')->fetchAll(); + $objects = $tester->dao->select('*')->from(TABLE_ACTION)->where('action')->eq('deleted')->fetchAll('', false); return $objects; } @@ -751,7 +754,7 @@ class actionTest if(!$stage || $stage->deleted) return false; } - if(isset($actionList[2]) && $actionList[2]->extra == '0') return true; + if(isset($actionList[2]) && $actionList[2]->extra == '0') return $actionList; return false; } diff --git a/module/action/test/model/builddategroup.php b/module/action/test/model/builddategroup.php index ab1a4620f8..a51e236342 100755 --- a/module/action/test/model/builddategroup.php +++ b/module/action/test/model/builddategroup.php @@ -6,10 +6,10 @@ use function zin\wg; include dirname(__FILE__, 5) . '/test/lib/init.php'; include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; zenData('user')->gen(60); -su('admin'); +zenData('action')->loadYaml('action')->gen(60); +zenData('actionrecent')->loadYaml('action')->gen(60); -zenData('action')->loadYaml('action')->gen(60, true, false); -zenData('actionrecent')->loadYaml('action')->gen(60, true, false); +su('admin'); /** @@ -19,49 +19,49 @@ cid=1 - 测试创建下一个动作日期组 今天 日期倒序 前一模块 my - 属性dateCount @1 - - 属性dateActions @1 + - 属性dateActions @2 - 测试创建下一个动作日期组 昨天 日期倒序 前一模块 my - 属性dateCount @1 - 属性dateActions @1 - 测试创建下一个动作日期组 今天 日期倒序 前一模块 company - 属性dateCount @1 - - 属性dateActions @1 + - 属性dateActions @2 - 测试创建下一个动作日期组 昨天 日期倒序 前一模块 company - 属性dateCount @1 - 属性dateActions @1 - 测试创建下一个动作日期组 今天 日期正序 前一模块 my - 属性dateCount @1 - - 属性dateActions @1 + - 属性dateActions @2 - 测试创建下一个动作日期组 昨天 日期正序 前一模块 my - 属性dateCount @1 - 属性dateActions @1 - 测试创建下一个动作日期组 今天 日期正序 前一模块 company - 属性dateCount @1 - - 属性dateActions @1 + - 属性dateActions @2 - 测试创建下一个动作日期组 昨天 日期正序 前一模块 company - 属性dateCount @1 - 属性dateActions @1 - 测试创建上一个动作日期组 今天 日期倒序 前一模块 my - 属性dateCount @1 - - 属性dateActions @1 + - 属性dateActions @2 - 测试创建上一个动作日期组 昨天 日期倒序 前一模块 my - 属性dateCount @1 - 属性dateActions @1 - 测试创建上一个动作日期组 今天 日期倒序 前一模块 company - 属性dateCount @1 - - 属性dateActions @1 + - 属性dateActions @2 - 测试创建上一个动作日期组 昨天 日期倒序 前一模块 company - 属性dateCount @1 - 属性dateActions @1 - 测试创建上一个动作日期组 今天 日期正序 前一模块 my - 属性dateCount @1 - - 属性dateActions @1 + - 属性dateActions @2 - 测试创建上一个动作日期组 昨天 日期正序 前一模块 my - 属性dateCount @1 - 属性dateActions @1 - 测试创建上一个动作日期组 今天 日期正序 前一模块 company - 属性dateCount @1 - - 属性dateActions @1 + - 属性dateActions @2 - 测试创建上一个动作日期组 昨天 日期正序 前一模块 company - 属性dateCount @1 - 属性dateActions @1 @@ -75,19 +75,19 @@ $rawMethodList = array('my', 'company'); $action = new actionTest(); -r($action->buildDateGroupTest($directionList[0], $typeList[0], $orderByList[0], $rawMethodList[0])) && p('dateCount,dateActions') && e('1,1'); // 测试创建下一个动作日期组 今天 日期倒序 前一模块 my +r($action->buildDateGroupTest($directionList[0], $typeList[0], $orderByList[0], $rawMethodList[0])) && p('dateCount,dateActions') && e('1,2'); // 测试创建下一个动作日期组 今天 日期倒序 前一模块 my r($action->buildDateGroupTest($directionList[0], $typeList[1], $orderByList[0], $rawMethodList[0])) && p('dateCount,dateActions') && e('1,1'); // 测试创建下一个动作日期组 昨天 日期倒序 前一模块 my -r($action->buildDateGroupTest($directionList[0], $typeList[0], $orderByList[0], $rawMethodList[1])) && p('dateCount,dateActions') && e('1,1'); // 测试创建下一个动作日期组 今天 日期倒序 前一模块 company +r($action->buildDateGroupTest($directionList[0], $typeList[0], $orderByList[0], $rawMethodList[1])) && p('dateCount,dateActions') && e('1,2'); // 测试创建下一个动作日期组 今天 日期倒序 前一模块 company r($action->buildDateGroupTest($directionList[0], $typeList[1], $orderByList[0], $rawMethodList[1])) && p('dateCount,dateActions') && e('1,1'); // 测试创建下一个动作日期组 昨天 日期倒序 前一模块 company -r($action->buildDateGroupTest($directionList[0], $typeList[0], $orderByList[1], $rawMethodList[0])) && p('dateCount,dateActions') && e('1,1'); // 测试创建下一个动作日期组 今天 日期正序 前一模块 my +r($action->buildDateGroupTest($directionList[0], $typeList[0], $orderByList[1], $rawMethodList[0])) && p('dateCount,dateActions') && e('1,2'); // 测试创建下一个动作日期组 今天 日期正序 前一模块 my r($action->buildDateGroupTest($directionList[0], $typeList[1], $orderByList[1], $rawMethodList[0])) && p('dateCount,dateActions') && e('1,1'); // 测试创建下一个动作日期组 昨天 日期正序 前一模块 my -r($action->buildDateGroupTest($directionList[0], $typeList[0], $orderByList[1], $rawMethodList[1])) && p('dateCount,dateActions') && e('1,1'); // 测试创建下一个动作日期组 今天 日期正序 前一模块 company +r($action->buildDateGroupTest($directionList[0], $typeList[0], $orderByList[1], $rawMethodList[1])) && p('dateCount,dateActions') && e('1,2'); // 测试创建下一个动作日期组 今天 日期正序 前一模块 company r($action->buildDateGroupTest($directionList[0], $typeList[1], $orderByList[1], $rawMethodList[1])) && p('dateCount,dateActions') && e('1,1'); // 测试创建下一个动作日期组 昨天 日期正序 前一模块 company -r($action->buildDateGroupTest($directionList[1], $typeList[0], $orderByList[0], $rawMethodList[0])) && p('dateCount,dateActions') && e('1,1'); // 测试创建上一个动作日期组 今天 日期倒序 前一模块 my +r($action->buildDateGroupTest($directionList[1], $typeList[0], $orderByList[0], $rawMethodList[0])) && p('dateCount,dateActions') && e('1,2'); // 测试创建上一个动作日期组 今天 日期倒序 前一模块 my r($action->buildDateGroupTest($directionList[1], $typeList[1], $orderByList[0], $rawMethodList[0])) && p('dateCount,dateActions') && e('1,1'); // 测试创建上一个动作日期组 昨天 日期倒序 前一模块 my -r($action->buildDateGroupTest($directionList[1], $typeList[0], $orderByList[0], $rawMethodList[1])) && p('dateCount,dateActions') && e('1,1'); // 测试创建上一个动作日期组 今天 日期倒序 前一模块 company +r($action->buildDateGroupTest($directionList[1], $typeList[0], $orderByList[0], $rawMethodList[1])) && p('dateCount,dateActions') && e('1,2'); // 测试创建上一个动作日期组 今天 日期倒序 前一模块 company r($action->buildDateGroupTest($directionList[1], $typeList[1], $orderByList[0], $rawMethodList[1])) && p('dateCount,dateActions') && e('1,1'); // 测试创建上一个动作日期组 昨天 日期倒序 前一模块 company -r($action->buildDateGroupTest($directionList[1], $typeList[0], $orderByList[1], $rawMethodList[0])) && p('dateCount,dateActions') && e('1,1'); // 测试创建上一个动作日期组 今天 日期正序 前一模块 my +r($action->buildDateGroupTest($directionList[1], $typeList[0], $orderByList[1], $rawMethodList[0])) && p('dateCount,dateActions') && e('1,2'); // 测试创建上一个动作日期组 今天 日期正序 前一模块 my r($action->buildDateGroupTest($directionList[1], $typeList[1], $orderByList[1], $rawMethodList[0])) && p('dateCount,dateActions') && e('1,1'); // 测试创建上一个动作日期组 昨天 日期正序 前一模块 my -r($action->buildDateGroupTest($directionList[1], $typeList[0], $orderByList[1], $rawMethodList[1])) && p('dateCount,dateActions') && e('1,1'); // 测试创建上一个动作日期组 今天 日期正序 前一模块 company +r($action->buildDateGroupTest($directionList[1], $typeList[0], $orderByList[1], $rawMethodList[1])) && p('dateCount,dateActions') && e('1,2'); // 测试创建上一个动作日期组 今天 日期正序 前一模块 company r($action->buildDateGroupTest($directionList[1], $typeList[1], $orderByList[1], $rawMethodList[1])) && p('dateCount,dateActions') && e('1,1'); // 测试创建上一个动作日期组 昨天 日期正序 前一模块 company \ No newline at end of file diff --git a/module/action/test/model/computebeginandend.php b/module/action/test/model/computebeginandend.php index 06c56b3d52..77dee45d8c 100755 --- a/module/action/test/model/computebeginandend.php +++ b/module/action/test/model/computebeginandend.php @@ -19,6 +19,12 @@ cid=1 - 测试计算lastweek的日期 @1 - 测试计算thismonth的日期 @1 - 测试计算lastmonth的日期 @1 +- 测试计算2025-06-11的日期的next排序 + - 属性begin @1970-01-01 + - 属性end @2025-06-11 +- 测试计算2025-06-11的日期的pre排序 + - 属性begin @2025-06-11 + - 属性end @2030-01-01 */ @@ -34,4 +40,6 @@ r($action->computeBeginAndEndTest($typeList[4])) && p() && e('1'); // 测试计 r($action->computeBeginAndEndTest($typeList[5])) && p() && e('1'); // 测试计算thisweek的日期 r($action->computeBeginAndEndTest($typeList[6])) && p() && e('1'); // 测试计算lastweek的日期 r($action->computeBeginAndEndTest($typeList[7])) && p() && e('1'); // 测试计算thismonth的日期 -r($action->computeBeginAndEndTest($typeList[8])) && p() && e('1'); // 测试计算lastmonth的日期 \ No newline at end of file +r($action->computeBeginAndEndTest($typeList[8])) && p() && e('1'); // 测试计算lastmonth的日期 +r($action->objectModel->computeBeginAndEnd($typeList[0], '2025-06-11', 'next')) && p('begin,end') && e('1970-01-01,2025-06-11'); // 测试计算2025-06-11的日期的next排序 +r($action->objectModel->computeBeginAndEnd($typeList[0], '2025-06-11', 'pre')) && p('begin,end') && e('2025-06-11,2030-01-01'); // 测试计算2025-06-11的日期的pre排序 \ No newline at end of file diff --git a/module/action/test/model/create.php b/module/action/test/model/create.php index e94b1db45b..5748f6976b 100755 --- a/module/action/test/model/create.php +++ b/module/action/test/model/create.php @@ -55,7 +55,7 @@ cid=1 - 属性actor @系统 - 属性action @synctwins - 测试升级中的并且版本号小于18.7的情况,不创建actionrecent @8 -- 测试升级中的并且版本号大于18.7的情况,创建actionrecent @9 +- 测试升级中的并且版本号大于18.7的情况,创建actionrecent @8 */ $objectTypeList = array('task', 'project', 'user', 'bug', 'story'); @@ -92,7 +92,7 @@ $action->createTest($objectTypeList[0], $objectIDList[0], $storyActionTypeList[0 r($tester->dao->select('COUNT(1) AS count')->from('zt_actionrecent')->fetch('count')) && p() && e('8'); //测试升级中的并且版本号小于18.7的情况,不创建actionrecent $action->createTest($objectTypeList[0], $objectIDList[0], $storyActionTypeList[0], $comment[0], '', '', '', $versionList[1]); -r($tester->dao->select('COUNT(1) AS count')->from('zt_actionrecent')->fetch('count')) && p() && e('9'); //测试升级中的并且版本号大于18.7的情况,创建actionrecent +r($tester->dao->select('COUNT(1) AS count')->from('zt_actionrecent')->fetch('count')) && p() && e('8'); //测试升级中的并且版本号大于18.7的情况,创建actionrecent $tester->dao->update(TABLE_CONFIG)->set('value')->eq($version)->where('`key`')->eq('version')->andWhere('owner')->eq('system')->andWhere('module')->eq('common')->exec(); $tester->app->upgrading = false; diff --git a/module/action/test/model/getdynamicbysearch.php b/module/action/test/model/getdynamicbysearch.php index cb4070e03e..3e774952e2 100755 --- a/module/action/test/model/getdynamicbysearch.php +++ b/module/action/test/model/getdynamicbysearch.php @@ -3,6 +3,15 @@ include dirname(__FILE__, 5) . '/test/lib/init.php'; include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; +zenData('action')->loadYaml('action')->gen(90); +zenData('actionrecent')->gen(0); +zenData('actionproduct')->loadYaml('actionproduct')->gen(90); +zenData('doclib')->gen(1); +zenData('doc')->gen(1); +zenData('lang')->gen(0); +zenData('product')->gen(1); +zenData('userquery')->loadYaml('userquery')->gen(1); + /** title=测试 actionModel->getDynamicBySearch(); @@ -30,18 +39,11 @@ cid=1 - 第1条的id属性 @31 - 第1条的objectType属性 @bug - 获取排序为date倒序的今年之后的动态 - - 第0条的id属性 @1 - - 第0条的objectType属性 @product + - 第0条的id属性 @31 + - 第0条的objectType属性 @bug */ -zenData('action')->loadYaml('action')->gen(90); -zenData('doclib')->gen(1); -zenData('doc')->gen(1); -zenData('lang')->gen(0); -zenData('product')->gen(1); -zenData('userquery')->loadYaml('userquery')->gen(1); - global $lang, $app; $lang->SRCommon = '研发需求'; $lang->URCommon = '用户需求'; @@ -57,8 +59,8 @@ $directionList = array('next', 'pre'); $action = new actionTest(); -r($action->getDynamicBySearchTest($queryID[0], $orderByList[0], $limit, $dateList[0], $directionList[0])) && p('0:id,objectType;1:id,objectType') && e('62,branch;31,bug'); // 获取排序为date倒序的所有动态 -r($action->getDynamicBySearchTest($queryID[0], $orderByList[1], $limit, $dateList[0], $directionList[0])) && p('0:id,objectType;1:id,objectType') && e('63,module;32,testcase'); // 获取排序为date正序的所有动态 -r($action->getDynamicBySearchTest($queryID[0], $orderByList[0], $limit, $dateList[0], $directionList[1])) && p('0:id,objectType;1:id,objectType') && e('62,branch;31,bug'); // 获取排序为date倒序的今年之后的动态 -r($action->getDynamicBySearchTest($queryID[0], $orderByList[0], $limit, $dateList[1], $directionList[0])) && p('0:id,objectType;1:id,objectType') && e('61,todo;30,build'); // 获取排序为date倒序的今天之前的动态 -r($action->getDynamicBySearchTest($queryID[1], $orderByList[0], $limit, $dateList[0], $directionList[1])) && p('0:id,objectType') && e('1,product'); // 获取排序为date倒序的今年之后的动态 +r(array_values($action->getDynamicBySearchTest($queryID[0], $orderByList[0], $limit, $dateList[0], $directionList[0]))) && p('0:id,objectType;1:id,objectType') && e('64,testsuite;32,testcase'); // 获取排序为date倒序的所有动态 +r(array_values($action->getDynamicBySearchTest($queryID[0], $orderByList[1], $limit, $dateList[0], $directionList[0]))) && p('0:id,objectType;1:id,objectType') && e('65,caselib;33,case'); // 获取排序为date正序的所有动态 +r(array_values($action->getDynamicBySearchTest($queryID[0], $orderByList[0], $limit, $dateList[0], $directionList[1]))) && p('0:id,objectType;1:id,objectType') && e('64,testsuite;32,testcase'); // 获取排序为date倒序的今年之后的动态 +r(array_values($action->getDynamicBySearchTest($queryID[0], $orderByList[0], $limit, $dateList[1], $directionList[0]))) && p('0:id,objectType;1:id,objectType') && e('63,module;31,bug'); // 获取排序为date倒序的今天之前的动态 +r(array_values($action->getDynamicBySearchTest($queryID[1], $orderByList[0], $limit, $dateList[0], $directionList[1]))) && p('0:id,objectType') && e('31,bug'); // 获取排序为date倒序的今年之后的动态 diff --git a/module/action/test/model/getdynamiccount.php b/module/action/test/model/getdynamiccount.php index 4d5b6316e2..f514d05a94 100755 --- a/module/action/test/model/getdynamiccount.php +++ b/module/action/test/model/getdynamiccount.php @@ -51,4 +51,4 @@ $_SESSION['actionQueryCondition'] = "1=1"; r($actionModel->getDynamicCount('today')) && p() && e('5'); // 测试传入条件 1=1。 $sql = $actionModel->dao->get(); -r(strpos($sql, "SELECT count(1) AS count FROM `zt_actionrecent` AS action") !== false) && p() && e('1'); // 检查SQL。 \ No newline at end of file +r(strpos($sql, "SELECT action.id FROM `zt_actionrecent` AS action") !== false) && p() && e('1'); // 检查SQL。 \ No newline at end of file diff --git a/module/action/test/model/getlikeobject.php b/module/action/test/model/getlikeobject.php index 5ac406b083..63189e8721 100755 --- a/module/action/test/model/getlikeobject.php +++ b/module/action/test/model/getlikeobject.php @@ -4,9 +4,9 @@ include dirname(__FILE__, 5) . '/test/lib/init.php'; include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; -su('admin'); - zenData('project')->gen(5); +zenData('actionrecent')->gen(0); +su('admin'); /** diff --git a/module/action/test/model/getlist.php b/module/action/test/model/getlist.php index 4e5738db7e..5c3eb1bbab 100755 --- a/module/action/test/model/getlist.php +++ b/module/action/test/model/getlist.php @@ -4,6 +4,7 @@ include dirname(__FILE__, 5) . '/test/lib/init.php'; include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; zenData('action')->loadYaml('action')->gen(99); +zenData('actionrecent')->gen(0); zenData('project')->gen(20, true, false); zenData('project')->loadYaml('execution')->gen(90, false, false); zenData('product')->loadYaml('product')->gen(50, true, false); @@ -110,10 +111,6 @@ cid=1 - 测试 开源版 获取对象类型 risk 对象ID 1 的动态信息 @nochanged - 测试 开源版 获取对象类型 isue 对象ID 1 的动态信息 @nochanged - 测试 开源版 获取对象类型 opportunity 对象ID 1 的动态信息 @nochanged -- 测试获取对象类型 task 对象ID 12 的动态信息 @link -- 测试 开源版 获取对象类型 risk 对象ID 1 的动态信息 @link -- 测试 开源版 获取对象类型 isue 对象ID 1 的动态信息 @link -- 测试 开源版 获取对象类型 opportunity 对象ID 1 的动态信息 @link - 测试获取对象类型 execution 对象ID 1 的动态信息 @link - 测试获取对象类型 execution 对象ID 2 的动态信息 @link - 测试获取对象类型 execution 对象ID 3 的动态信息 @link @@ -339,19 +336,6 @@ r($action->getListTest($objectType[11], $hasOneID[0])) && p() && e('nochanged'); // 操作 importfromopportunitylib r($action->getListTest($objectType[12], $hasOneID[0])) && p() && e('nochanged'); // 测试 开源版 获取对象类型 opportunity 对象ID 1 的动态信息 -// 旗舰版 导入资产库相关 -// 操作 importfromstorylib -r($action->getListTest($objectType[1], $taskID[11], 'max')) && p() && e('link'); // 测试获取对象类型 task 对象ID 12 的动态信息 - -// 操作 importfromrisklib -r($action->getListTest($objectType[10], $hasOneID[0], 'max')) && p() && e('link'); // 测试 开源版 获取对象类型 risk 对象ID 1 的动态信息 - -// 操作 importfromissuelib -r($action->getListTest($objectType[11], $hasOneID[0], 'max')) && p() && e('link'); // 测试 开源版 获取对象类型 isue 对象ID 1 的动态信息 - -// 操作 importfromopportunitylib -r($action->getListTest($objectType[12], $hasOneID[0], 'max')) && p() && e('link'); // 测试 开源版 获取对象类型 opportunity 对象ID 1 的动态信息 - // 操作 opened 对象类型 execution r($action->getListTest($objectType[13], $executionID[0])) && p() && e('link'); // 测试获取对象类型 execution 对象ID 1 的动态信息 diff --git a/module/action/test/model/getmoreactions.php b/module/action/test/model/getmoreactions.php index a011849dda..a56146e4bd 100755 --- a/module/action/test/model/getmoreactions.php +++ b/module/action/test/model/getmoreactions.php @@ -38,7 +38,7 @@ r(count($actionModel->getMoreActions($actionID))) && p() && e('0'); // 测试 $_SESSION['actionQueryCondition'] = "actor='admin' AND t2.product='1';"; r(count($actionModel->getMoreActions($actionID))) && p() && e('0'); // 测试传入条件 actor='admin' AND t2.product='1'。 -$actionModel->dao->update(TABLE_ACTION)->set('date')->eq('2025-05-19 15:15:50')->exec(); +$actionModel->dao->update(TABLE_ACTION)->set("`date` = concat('2025-05-19 15:15:5', id)")->exec(); $_SESSION['actionQueryCondition'] = "1=1"; r(count($actionModel->getMoreActions($actionID))) && p() && e('2'); // 测试传入条件 1=1。 diff --git a/module/action/test/model/getobjectlabel.php b/module/action/test/model/getobjectlabel.php index ab09b41b23..5ca21447d6 100755 --- a/module/action/test/model/getobjectlabel.php +++ b/module/action/test/model/getobjectlabel.php @@ -2,6 +2,8 @@ gen(0); su('admin'); /** @@ -11,12 +13,12 @@ timeout=0 cid=1 - 测试获取objectType product objectId 1的动态信息 @产品|product|view|productID=%s -- 测试获取objectType story objectId 2的动态信息 @研发需求|story|view|storyID=%s +- 测试获取objectType story objectId 2的动态信息 @研发需求|story|storyView|storyID=%s - 测试获取objectType productplan objectId 3的动态信息 @计划|productplan|view|productID=%s - 测试获取objectType release objectId 4的动态信息 @发布|release|view|productID=%s - 测试获取objectType project objectId 5的动态信息 @项目|project|index|projectID=%s - 测试获取objectType task objectId 6的动态信息 @任务|task|view|taskID=%s -- 测试获取objectType build objectId 7的动态信息 @版本|build|view|buildID=%s +- 测试获取objectType build objectId 7的动态信息 @构建|build|view|buildID=%s - 测试获取objectType bug objectId 8的动态信息 @Bug|bug|view|bugID=%s - 测试获取objectType testcase objectId 9的动态信息 @testcase - 测试获取objectType case objectId 10的动态信息 @用例|testcase|view|caseID=%s @@ -32,7 +34,8 @@ cid=1 - 测试获取objectType entry objectId 21的动态信息 @应用|entry|browse| - 测试获取objectType webhook objectId 22的动态信息 @Webhook|webhook|browse| - 测试获取objectType review objectId 23的动态信息 @review -- 测试获取objectType story objectId 25的动态信息 @用户需求|story|view|storyID=%s +- 测试获取objectType story objectId 25的动态信息 @用户需求|story|storyView|storyID=%s +- 测试获取objectType story objectId 26的动态信息 @业务需求|story|storyView|storyID=%s */ @@ -57,7 +60,7 @@ r($action->getObjectLabelTest($objectType[2], $objectId[2], $actionType[2], $ r($action->getObjectLabelTest($objectType[3], $objectId[3], $actionType[3], $requirements, $epics)) && p() && e('发布|release|view|productID=%s'); // 测试获取objectType release objectId 4的动态信息 r($action->getObjectLabelTest($objectType[4], $objectId[4], $actionType[4], $requirements, $epics)) && p() && e('项目|project|index|projectID=%s'); // 测试获取objectType project objectId 5的动态信息 r($action->getObjectLabelTest($objectType[5], $objectId[5], $actionType[5], $requirements, $epics)) && p() && e('任务|task|view|taskID=%s'); // 测试获取objectType task objectId 6的动态信息 -r($action->getObjectLabelTest($objectType[6], $objectId[6], $actionType[6], $requirements, $epics)) && p() && e('版本|build|view|buildID=%s'); // 测试获取objectType build objectId 7的动态信息 +r($action->getObjectLabelTest($objectType[6], $objectId[6], $actionType[6], $requirements, $epics)) && p() && e('构建|build|view|buildID=%s'); // 测试获取objectType build objectId 7的动态信息 r($action->getObjectLabelTest($objectType[7], $objectId[7], $actionType[7], $requirements, $epics)) && p() && e('Bug|bug|view|bugID=%s'); // 测试获取objectType bug objectId 8的动态信息 r($action->getObjectLabelTest($objectType[8], $objectId[8], $actionType[8], $requirements, $epics)) && p() && e('testcase'); // 测试获取objectType testcase objectId 9的动态信息 r($action->getObjectLabelTest($objectType[9], $objectId[9], $actionType[9], $requirements, $epics)) && p() && e('用例|testcase|view|caseID=%s'); // 测试获取objectType case objectId 10的动态信息 diff --git a/module/action/test/model/gettrashesbysearch.php b/module/action/test/model/gettrashesbysearch.php index f5ac904894..c0a75798c4 100755 --- a/module/action/test/model/gettrashesbysearch.php +++ b/module/action/test/model/gettrashesbysearch.php @@ -8,6 +8,7 @@ include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; su('admin'); zenData('action')->loadYaml('action')->gen(20); +zenData('actionrecent')->gen(0); zenData('userquery')->loadYaml('userquery')->gen(2); zenData('story')->gen(10); zenData('pipeline')->gen(5); diff --git a/module/action/test/model/gettrashobjecttypes.php b/module/action/test/model/gettrashobjecttypes.php index 32c6fdb82f..a829f05d91 100755 --- a/module/action/test/model/gettrashobjecttypes.php +++ b/module/action/test/model/gettrashobjecttypes.php @@ -5,6 +5,7 @@ include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; su('admin'); zenData('action')->loadYaml('action')->gen(20); +zenData('actionrecent')->gen(0); /** diff --git a/module/action/test/model/hasmoreaction.php b/module/action/test/model/hasmoreaction.php index ed9d43c41c..61d800ccf4 100755 --- a/module/action/test/model/hasmoreaction.php +++ b/module/action/test/model/hasmoreaction.php @@ -28,7 +28,7 @@ $actionModel = $tester->loadModel('action'); $lastAction = new stdclass(); $lastAction->id = 3; -$lastAction->originalDate = '2025-05-19 15:15:49'; +$lastAction->originalDate = '2025-05-19 15:15:53'; $_SESSION['actionOrderBy'] = '`date` desc'; $_SESSION['actionQueryCondition'] = ''; @@ -46,6 +46,6 @@ r($actionModel->hasMoreAction($lastAction)) && p() && e('0'); // 测试传入 $sql = $actionModel->dao->get(); r(strpos($sql, "LEFT JOIN `zt_actionproduct` AS t2 ON action.id=t2.action") !== false) && p() && e('1'); // 检查SQL。 -$actionModel->dao->update(TABLE_ACTION)->set('date')->eq('2025-05-19 15:15:50')->exec(); +$actionModel->dao->update(TABLE_ACTION)->set("`date` = concat('2025-05-19 15:15:5', id)")->exec(); $_SESSION['actionQueryCondition'] = "1=1"; r($actionModel->hasMoreAction($lastAction)) && p() && e('1'); // 测试传入条件 1=1。 \ No newline at end of file diff --git a/module/action/test/model/haspreornext.php b/module/action/test/model/haspreornext.php index 185f28ee0d..b1438a17d7 100755 --- a/module/action/test/model/haspreornext.php +++ b/module/action/test/model/haspreornext.php @@ -2,9 +2,11 @@ loadYaml('action')->gen(6); +zenData('actionrecent')->gen(0); + +su('admin'); /** diff --git a/module/action/test/model/hideall.php b/module/action/test/model/hideall.php index cd775733af..b35c8251f6 100755 --- a/module/action/test/model/hideall.php +++ b/module/action/test/model/hideall.php @@ -5,6 +5,7 @@ include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; su('admin'); zenData('action')->loadYaml('action')->gen(3); +zenData('actionrecent')->gen(0); /** @@ -12,13 +13,24 @@ title=测试 actionModel->hideAll(); timeout=0 cid=1 -- 隐藏回收站全部信息 - - 第0条的extra属性 @2 - - 第1条的extra属性 @2 - - 第2条的extra属性 @2 +- 第一条日志隐藏回收站信息 + - 属性id @1 + - 属性action @deleted + - 属性extra @2 +- 第二条日志隐藏回收站信息 + - 属性id @2 + - 属性action @deleted + - 属性extra @2 +- 第三条日志隐藏回收站信息 + - 属性id @3 + - 属性action @deleted + - 属性extra @2 */ $action = new actionTest(); -r($action->hideAllTest()) && p('0:extra;1:extra;2:extra') && e('2;2;2'); // 隐藏回收站全部信息 \ No newline at end of file +$actions = $action->hideAllTest(); +r($actions[0]) && p('id,action,extra') && e('1,deleted,2'); // 第一条日志隐藏回收站信息 +r($actions[1]) && p('id,action,extra') && e('2,deleted,2'); // 第二条日志隐藏回收站信息 +r($actions[2]) && p('id,action,extra') && e('3,deleted,2'); // 第三条日志隐藏回收站信息 \ No newline at end of file diff --git a/module/action/test/model/hideone.php b/module/action/test/model/hideone.php index 4517e0c861..5224ff025e 100755 --- a/module/action/test/model/hideone.php +++ b/module/action/test/model/hideone.php @@ -5,6 +5,7 @@ include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; su('admin'); zenData('action')->loadYaml('action')->gen(2); +zenData('actionrecent')->gen(0); /** @@ -13,7 +14,10 @@ timeout=0 cid=1 - 隐藏action1属性extra @2 -- 隐藏action2属性extra @1 +- 隐藏action2 + - 属性id @2 + - 属性action @created + - 属性extra @1 - 检查是否有action1的删除数据属性objectID @1 - 检查是否有action2的删除数据 @0 @@ -25,7 +29,7 @@ $deleteAction2SuccessActionID = 4; $action = new actionTest(); -r($action->hideOneTest($actionIDList[0])) && p('extra') && e('2'); //隐藏action1 -r($action->hideOneTest($actionIDList[1])) && p('extra') && e('1'); //隐藏action2 -r($action->getByIdTest($deleteAction1SuccessActionID)) && p('objectID') && e('1'); //检查是否有action1的删除数据 -r($action->getByIdTest($deleteAction2SuccessActionID)) && p('') && e('0'); //检查是否有action2的删除数据 \ No newline at end of file +r($action->hideOneTest($actionIDList[0])) && p('extra') && e('2'); //隐藏action1 +r($action->hideOneTest($actionIDList[1])) && p('id,action,extra') && e('2,created,1'); //隐藏action2 +r($action->getByIdTest($deleteAction1SuccessActionID)) && p('objectID') && e('1'); //检查是否有action1的删除数据 +r($action->getByIdTest($deleteAction2SuccessActionID)) && p('') && e('0'); //检查是否有action2的删除数据 \ No newline at end of file diff --git a/module/action/test/model/loghistory.php b/module/action/test/model/loghistory.php index b90bec12c4..6718166c41 100755 --- a/module/action/test/model/loghistory.php +++ b/module/action/test/model/loghistory.php @@ -2,6 +2,10 @@ loadYaml('action')->gen(10); +zenData('actionrecent')->gen(0); +zenData('history')->gen(0); su('admin'); /** @@ -10,33 +14,33 @@ title=测试 actionModel->logHistory(); timeout=0 cid=1 -- 测试新增actionID 10001 历史记录 +- 测试新增actionID 1 历史记录 - 第0条的field属性 @name - 第0条的old属性 @变更前名称 - 第0条的new属性 @变更后名称 - 第1条的field属性 @code - 第1条的old属性 @变更前编号 - 第1条的new属性 @变更后编号 -- 测试新增actionID 10002 历史记录 +- 测试新增actionID 2 历史记录 - 第0条的field属性 @assignedTo - 第0条的old属性 @admin - 第0条的new属性 @test1 -- 测试新增actionID 10003 历史记录 +- 测试新增actionID 3 历史记录 - 第0条的field属性 @name - 第0条的old属性 @name1 - 第0条的new属性 @name2 -- 测试新增actionID 10004 历史记录 +- 测试新增actionID 4 历史记录 - 第0条的field属性 @code - 第0条的old属性 @code1 - 第0条的new属性 @code2 -- 测试新增actionID 10005 历史记录 +- 测试新增actionID 5 历史记录 - 第0条的field属性 @assignedTo - 第0条的old属性 @test2 - 第0条的new属性 @test1 */ -$actionIDList = array('10001', '10002', '10003', '10004', '10005'); +$actionIDList = array('1', '2', '3', '4', '5'); $changes1[0] = array('field' => 'name', 'old' => '变更前名称', 'new' => '变更后名称'); $changes1[1] = array('field' => 'code', 'old' => '变更前编号', 'new' => '变更后编号'); @@ -47,8 +51,8 @@ $changes5[0] = array('field' => 'assignedTo', 'old' => 'test2', 'new' => 'test1' $action = new actionTest(); -r($action->logHistoryTest($actionIDList[0], $changes1)) && p('0:field,old,new;1:field,old,new') && e('name,变更前名称,变更后名称;code,变更前编号,变更后编号'); // 测试新增actionID 10001 历史记录 -r($action->logHistoryTest($actionIDList[1], $changes2)) && p('0:field,old,new') && e('assignedTo,admin,test1'); // 测试新增actionID 10002 历史记录 -r($action->logHistoryTest($actionIDList[2], $changes3)) && p('0:field,old,new') && e('name,name1,name2'); // 测试新增actionID 10003 历史记录 -r($action->logHistoryTest($actionIDList[3], $changes4)) && p('0:field,old,new') && e('code,code1,code2'); // 测试新增actionID 10004 历史记录 -r($action->logHistoryTest($actionIDList[4], $changes5)) && p('0:field,old,new') && e('assignedTo,test2,test1'); // 测试新增actionID 10005 历史记录 \ No newline at end of file +r($action->logHistoryTest($actionIDList[0], $changes1)) && p('0:field,old,new;1:field,old,new') && e('name,变更前名称,变更后名称;code,变更前编号,变更后编号'); // 测试新增actionID 1 历史记录 +r($action->logHistoryTest($actionIDList[1], $changes2)) && p('0:field,old,new') && e('assignedTo,admin,test1'); // 测试新增actionID 2 历史记录 +r($action->logHistoryTest($actionIDList[2], $changes3)) && p('0:field,old,new') && e('name,name1,name2'); // 测试新增actionID 3 历史记录 +r($action->logHistoryTest($actionIDList[3], $changes4)) && p('0:field,old,new') && e('code,code1,code2'); // 测试新增actionID 4 历史记录 +r($action->logHistoryTest($actionIDList[4], $changes5)) && p('0:field,old,new') && e('assignedTo,test2,test1'); // 测试新增actionID 5 历史记录 \ No newline at end of file diff --git a/module/action/test/model/processdynamicforapi.php b/module/action/test/model/processdynamicforapi.php index 142215c6fe..2aa75d9344 100755 --- a/module/action/test/model/processdynamicforapi.php +++ b/module/action/test/model/processdynamicforapi.php @@ -2,9 +2,11 @@ gen(10); +zenData('actionrecent')->gen(0); + +su('admin'); /** diff --git a/module/action/test/model/processprojectactions.php b/module/action/test/model/processprojectactions.php index a7dae04ead..e72fd5a3fd 100755 --- a/module/action/test/model/processprojectactions.php +++ b/module/action/test/model/processprojectactions.php @@ -5,6 +5,7 @@ include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; su('admin'); zenData('action')->loadYaml('action')->gen(10); +zenData('actionrecent')->gen(0); /** diff --git a/module/action/test/model/read.php b/module/action/test/model/read.php index 497550a195..3075cdc3aa 100755 --- a/module/action/test/model/read.php +++ b/module/action/test/model/read.php @@ -5,6 +5,7 @@ include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; su('admin'); zenData('action')->loadYaml('action')->gen(5); +zenData('actionrecent')->gen(0); /** diff --git a/module/action/test/model/restorestages.php b/module/action/test/model/restorestages.php index 1a574a060c..fb2fc82593 100755 --- a/module/action/test/model/restorestages.php +++ b/module/action/test/model/restorestages.php @@ -3,11 +3,12 @@ include dirname(__FILE__, 5) . '/test/lib/init.php'; include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; zenData('user')->gen(5); -su('admin'); - zenData('stage')->gen(5); zenData('project')->loadYaml('project')->gen(5); zenData('action')->loadYaml('action')->gen(4); +zenData('actionrecent')->gen(0); + +su('admin'); /** @@ -15,12 +16,19 @@ title=测试 actionModel->restoreStages(); timeout=0 cid=1 -- 测试还原id为2和3的阶段 @1 +- 测试还原id为2的阶段 + - 属性id @1 + - 属性action @deleted + - 属性extra @0 +- 测试还原id为3的阶段 + - 属性id @2 + - 属性action @deleted + - 属性extra @0 */ $action = new actionTest(); -$hasDeleted = $action->restoreStagesTest(array(2 => 2, 3 => 3), array(1, 2)); - -r($hasDeleted) && p('') && e('1'); // 测试还原id为2和3的阶段 +$actions = $action->restoreStagesTest(array(2 => 2, 3 => 3), array(1, 2)); +r($actions[1]) && p('id,action,extra') && e('1,deleted,0'); // 测试还原id为2的阶段 +r($actions[2]) && p('id,action,extra') && e('2,deleted,0'); // 测试还原id为3的阶段 diff --git a/module/action/test/model/saveindex.php b/module/action/test/model/saveindex.php index 0c165d4873..9248f3669e 100755 --- a/module/action/test/model/saveindex.php +++ b/module/action/test/model/saveindex.php @@ -5,6 +5,7 @@ include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; su('admin'); zenData('action')->gen(5); +zenData('actionrecent')->gen(0); zenData('bug')->gen(1); zenData('effort')->gen(1); zenData('case')->gen(1); diff --git a/module/action/test/model/transformactions.php b/module/action/test/model/transformactions.php index 5d5ada0740..2fe3d3ddd3 100755 --- a/module/action/test/model/transformactions.php +++ b/module/action/test/model/transformactions.php @@ -5,6 +5,7 @@ include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; su('admin'); zenData('action')->loadYaml('action')->gen(25); +zenData('actionrecent')->gen(0); zenData('product')->gen(1); zenData('story')->gen(1); zenData('productplan')->gen(1); @@ -29,7 +30,7 @@ zenData('product')->gen(1); /** -title=测试转换动态71 72 73 74 75 >> 分支1;这是一个模块1;这是测试套件名称1;这是测试套件名称1;2023-09-19EXECUTION +title=测试 actionModel->transformActions(); timeout=0 cid=101 diff --git a/module/action/test/model/undelete.php b/module/action/test/model/undelete.php index 43e74fc26f..1d955e18d1 100755 --- a/module/action/test/model/undelete.php +++ b/module/action/test/model/undelete.php @@ -5,6 +5,7 @@ include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; su('admin'); zenData('action')->loadYaml('action')->gen(25); +zenData('actionrecent')->gen(0); zenData('product')->loadYaml('product')->gen(2); zenData('project')->loadYaml('execution')->gen(111); zenData('repo')->loadYaml('repo')->gen(3); @@ -134,4 +135,4 @@ r($result && $parentPlan->parent == '0') && p('') && e('1'); $result = $action->undeleteTest($actionIDList[25]); $task = $tester->dao->select('*')->from('zt_task')->where('id')->eq('1')->fetch(); -r($result && $task->parent == '-1') && p('') && e('1'); // 测试还原action 25, objectType task 的数据。 +r($result && $task->deleted == '0') && p('') && e('1'); // 测试还原action 25, objectType task 的数据。 From ce7b153cdeef9d40c1f113ea8d3c6955687bcbfe Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 20 Jun 2025 16:57:53 +0800 Subject: [PATCH 2/3] * [unittest] Adjust processhistory unit test. --- module/action/test/model/processhistory.php | 53 +++++++++++++++++++-- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/module/action/test/model/processhistory.php b/module/action/test/model/processhistory.php index 81fe197af2..11e89909d2 100755 --- a/module/action/test/model/processhistory.php +++ b/module/action/test/model/processhistory.php @@ -3,19 +3,62 @@ include dirname(__FILE__, 5) . '/test/lib/init.php'; include dirname(__FILE__, 2) . '/lib/action.unittest.class.php'; +zenData('user')->gen(10); +zenData('action')->gen(10); +zenData('actionrecent')->gen(0); +zenData('history')->loadYaml('history')->gen(25); + +su('admin'); + /** title=测试 actionModel->processHistory(); timeout=0 cid=1 +- 测试处理ID为的产品历史记录 + - 属性field @PO + - 属性oldValue @~~ + - 属性newValue @用户1 +- 测试处理ID为的需求历史记录 + - 属性field @status + - 属性oldValue @未开始 + - 属性newValue @已关闭 +- 测试处理ID为的计划历史记录 + - 属性field @closedReason + - 属性oldValue @~~ + - 属性newValue @已完成 +- 测试处理ID为的发布历史记录 + - 属性field @PM + - 属性oldValue @~~ + - 属性newValue @用户4 +- 测试处理ID为的项目历史记录 + - 属性field @closedReason + - 属性oldValue @~~ + - 属性newValue @已完成 +- 测试处理ID为的任务历史记录 + - 属性field @builder + - 属性oldValue @~~ + - 属性newValue @用户8 +- 测试处理ID为的版本历史记录 + - 属性field @resolution + - 属性oldValue @~~ + - 属性newValue @已解决 +- 测试处理ID为的Bug历史记录 + - 属性field @type + - 属性oldValue @单元测试 + - 属性newValue @接口测试 +- 测试处理ID为的用例历史记录 + - 属性field @lastRunner + - 属性oldValue @~~ + - 属性newValue @用户2 +- 测试处理ID为的用例历史记录 + - 属性field @stage + - 属性oldValue @单元测试阶段 + - 属性newValue @功能测试阶段 + */ -zenData('user')->gen(10); -su('admin'); - -zenData('history')->loadYaml('history')->gen(25); - $idList = array(1, 9, 10, 11, 16, 17, 20, 23, 24, 25); $actionTester = new actionTest(); From d431b3d41472545b2ffc9c029487b3a2c695fad1 Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 20 Jun 2025 17:15:55 +0800 Subject: [PATCH 3/3] * [refac] Adjust ztSessionHandler class. --- framework/base/router.class.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/framework/base/router.class.php b/framework/base/router.class.php index d58a607a41..85ab04c74e 100644 --- a/framework/base/router.class.php +++ b/framework/base/router.class.php @@ -3892,7 +3892,7 @@ class ztSessionHandler implements SessionHandlerInterface { $sessFile = $this->getSessionFile($id); if(!$sessFile) return true; - if(!is_writable($sessFile)) return true; + if(file_exists($sessFile) && !is_writable($sessFile)) return true; if(md5_file($sessFile) == md5($sessData)) return true; if(file_put_contents($sessFile, $sessData, LOCK_EX)) return true; return true;