diff --git a/module/programplan/tao.php b/module/programplan/tao.php
index fc77d5f3f9..a3dfd823bd 100644
--- a/module/programplan/tao.php
+++ b/module/programplan/tao.php
@@ -775,9 +775,10 @@ class programplanTao extends programplanModel
*/
protected function buildGanttLinks(array $planIdList): array
{
- if($this->config->edition == 'open') array();
+ $this->app->loadConfig('execution');
+ if($this->config->edition == 'open') return array();
- $links = array();
+ $links = array();
$relations = $this->dao->select('*')->from(TABLE_RELATIONOFTASKS)->where('execution')->in($planIdList)->orderBy('task,pretask')->fetchAll();
foreach($relations as $relation)
{
@@ -803,6 +804,8 @@ class programplanTao extends programplanModel
{
foreach($stages as $index => $stage)
{
+ if(!isset($ganttData['data'][$index])) continue;
+
$progress = empty($stage['totalReal']) ? 0 : round($stage['totalConsumed'] / $stage['totalReal'], 3);
$ganttData['data'][$index]->progress = $progress;
$ganttData['data'][$index]->taskProgress = ($progress * 100) . '%';
@@ -821,7 +824,7 @@ class programplanTao extends programplanModel
* @access protected
* @return array
*/
- protected function getTaskDateLimit(object $task, object|null $execution): array
+ protected function getTaskDateLimit(object $task, object|null $execution = null): array
{
$estStart = helper::isZeroDate($task->estStarted) ? '' : $task->estStarted;
$estEnd = helper::isZeroDate($task->deadline) ? '' : $task->deadline;
diff --git a/module/programplan/test/model/checkleafstage.php b/module/programplan/test/model/checkleafstage.php
index 88bfeae06d..0a46427ec2 100755
--- a/module/programplan/test/model/checkleafstage.php
+++ b/module/programplan/test/model/checkleafstage.php
@@ -6,6 +6,10 @@
title=测试programplanModel->checkLeafStage();
cid=0
+- 获取阶段ID为0,判断是是否为叶子节点,结果为0 @0
+- 获取阶段ID为2,判断是是否为叶子节点,结果为0 @0
+- 获取阶段ID为5,判断是否为叶子节点,结果为1 @1
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
diff --git a/module/programplan/test/model/computeprogress.php b/module/programplan/test/model/computeprogress.php
index 1de8623b46..53a80179fa 100755
--- a/module/programplan/test/model/computeprogress.php
+++ b/module/programplan/test/model/computeprogress.php
@@ -6,6 +6,16 @@
title=测试 programplanModel->computeProgress();
cid=0
+- 测试参数=项目id直接continue @fail
+- 测试阶段status=suspended子阶段status=wait @success
+- 测试阶段status:suspended=>wait属性status @wait
+- 测试阶段status=suspended子阶段status=closed @success
+- 测试阶段status:suspended=>closed属性status @closed
+- 测试阶段status=doing子阶段status=suspended @success
+- 测试阶段status:doing=>suspended属性status @suspended
+- 测试阶段status更新为doing @success
+- 测试阶段状态更新为donging属性status @doing
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
diff --git a/module/programplan/test/model/create.php b/module/programplan/test/model/create.php
index 2498872d15..1a7c9c75bd 100755
--- a/module/programplan/test/model/create.php
+++ b/module/programplan/test/model/create.php
@@ -6,6 +6,18 @@
title=测试 programplanModel->create();
cid=0
+- 传入空数据第message条的0属性 @『阶段名称』不能为空。
+- 阶段已经分解了任务第message条的0属性 @已分解任务,不可添加子阶段
+- 测试正常更新阶段信息 获取阶段数量 @7
+- 测试正常更新阶段信息 检查数据信息
+ - 第0条的name属性 @阶段31
+ - 第1条的name属性 @阶段121
+- 测试正常更新阶段信息 获取阶段数量 @4
+- 测试正常更新阶段信息 获取数据信息
+ - 第0条的name属性 @新阶段31
+ - 第1条的name属性 @新阶段121
+ - 第3条的name属性 @新增的阶段
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
diff --git a/module/programplan/test/model/getbyid.php b/module/programplan/test/model/getbyid.php
index b70b61709b..5e4afb3d69 100755
--- a/module/programplan/test/model/getbyid.php
+++ b/module/programplan/test/model/getbyid.php
@@ -6,6 +6,15 @@
title=测试 programplanModel->getByID();
cid=0
+- 传入0参数。 @0
+- 传入不存在的ID。 @0
+- 判断项目阶段id=2的name
+ - 属性name @执行1-1
+ - 属性code @sprint1-1
+- 判断项目id=1走else的milestone,setMilestone
+ - 属性milestone @0
+ - 属性setMilestone @``
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
diff --git a/module/programplan/test/model/getdataforgantt.php b/module/programplan/test/model/getdataforgantt.php
index 716fdc24e0..46d973e668 100755
--- a/module/programplan/test/model/getdataforgantt.php
+++ b/module/programplan/test/model/getdataforgantt.php
@@ -6,6 +6,16 @@
title=测试 programplanModel->getDataForGantt();
cid=0
+- 测试获取阶段数据第0条的type属性 @plan
+- 测试获取任务数据
+ - 第4条的id属性 @2-1
+ - 第4条的type属性 @task
+- 测试获取阶段数据(JSON类型返回值)第0条的type属性 @plan
+- 测试获取任务数据(JSON类型返回值)
+ - 第4条的id属性 @2-1
+ - 第4条的type属性 @task
+- 测试自定义参数为空的情况获取任务数据 @4
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
diff --git a/module/programplan/test/model/getdataforganttgroupbyassignedto.php b/module/programplan/test/model/getdataforganttgroupbyassignedto.php
index 455df9b127..d9486c32a3 100755
--- a/module/programplan/test/model/getdataforganttgroupbyassignedto.php
+++ b/module/programplan/test/model/getdataforganttgroupbyassignedto.php
@@ -6,6 +6,16 @@
title=测试 programplanModel->getDataForGanttGroupByAssignedTo();
cid=0
+- 测试获取阶段数据第0条的type属性 @group
+- 测试获取任务数据
+ - 第4条的id属性 @8
+ - 第4条的type属性 @task
+- 测试获取阶段数据(JSON类型返回值)第0条的type属性 @group
+- 测试获取任务数据(JSON类型返回值)
+ - 第4条的id属性 @8
+ - 第4条的type属性 @task
+- 测试自定义参数为空的情况获取任务数据 @1
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
diff --git a/module/programplan/test/model/getduration.php b/module/programplan/test/model/getduration.php
index fa84470eed..404d32af45 100755
--- a/module/programplan/test/model/getduration.php
+++ b/module/programplan/test/model/getduration.php
@@ -6,6 +6,12 @@
title=测试 programplanModel->getDuration();
cid=0
+- 测试获取2022-04-01 ~ 2022-05-01持续时间 @21
+- 测试获取2022-04-02 ~ 2022-05-06持续时间 @25
+- 测试获取2022-04-03 ~ 2022-05-11持续时间 @28
+- 测试获取2022-04-04 ~ 2022-05-16持续时间 @31
+- 测试获取2022-04-05 ~ 2022-05-21持续时间 @34
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
diff --git a/module/programplan/test/model/getpairs.php b/module/programplan/test/model/getpairs.php
index 347a38950b..c2a6cf3526 100755
--- a/module/programplan/test/model/getpairs.php
+++ b/module/programplan/test/model/getpairs.php
@@ -6,6 +6,9 @@
title=测试 programplanModel->getPairs();
cid=0
+- 测试获取执行11 产品11的计划键值对 @;/项目11
+- 测试获取执行12 产品12的计划键值对 @;/项目12
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
diff --git a/module/programplan/test/model/getparentchildrentypes.php b/module/programplan/test/model/getparentchildrentypes.php
index e7a3a87b99..db304b3f9a 100755
--- a/module/programplan/test/model/getparentchildrentypes.php
+++ b/module/programplan/test/model/getparentchildrentypes.php
@@ -6,6 +6,20 @@
title=测试 programplanModel->getParentChildrenTypes();
cid=0
+- 查找父ID为 0 未删除的阶段类型 @1
+- 查找父ID为 1 未删除的阶段类型 stage属性stage @stage
+- 查找父ID为 1 未删除的阶段类型 kanban属性kanban @kanban
+- 查找父ID为 1 未删除的阶段类型数量 @2
+- 查找父ID为 2 未删除的阶段类型 sprint属性sprint @sprint
+- 查找父ID为 2 未删除的阶段类型数量 @1
+- 查找父ID为 3 未删除的阶段类型 stage属性stage @stage
+- 查找父ID为 3 未删除的阶段类型 sprint属性sprint @sprint
+- 查找父ID为 3 未删除的阶段类型数量 @2
+- 查找父ID为 1 未删除的阶段类型 stage属性stage @0
+- 查找父ID为 1 未删除的阶段类型 sprint属性sprint @0
+- 查找父ID为 1 未删除的阶段类型 kanban属性kanban @0
+- 查找父ID为 1 未删除的阶段类型数量 @0
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
diff --git a/module/programplan/test/model/getparentstagelist.php b/module/programplan/test/model/getparentstagelist.php
index 807c3aaed0..f0fe16c77d 100755
--- a/module/programplan/test/model/getparentstagelist.php
+++ b/module/programplan/test/model/getparentstagelist.php
@@ -6,6 +6,10 @@
title=测试 programplanModel->getParentStageList();
cid=0
+- 测试查询项目1产品2阶段8父阶段信息 @执行1-1
+- 测试查询项目1产品3阶段8父阶段信息 @无
+- 测试查询项目4产品6阶段8父阶段信息 @执行2-1-1
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
diff --git a/module/programplan/test/model/getplans.php b/module/programplan/test/model/getplans.php
index 933a28e2ec..ddd68f4b47 100755
--- a/module/programplan/test/model/getplans.php
+++ b/module/programplan/test/model/getplans.php
@@ -1,10 +1,21 @@
#!/usr/bin/env php
getPlans();
cid=0
+- 测试获取执行2 产品2的阶段
+ - 属性type @stage
+ - 属性name @阶段a
+- 测试获取执行3 产品2的阶段
+ - 属性type @stage
+ - 属性name @阶段a子1
+- 测试获取执行4 产品2的阶段
+ - 属性type @stage
+ - 属性name @阶段a子1子1
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
diff --git a/module/programplan/test/model/getselfandchildrenlist.php b/module/programplan/test/model/getselfandchildrenlist.php
index b0d6e331f6..ef362275a7 100755
--- a/module/programplan/test/model/getselfandchildrenlist.php
+++ b/module/programplan/test/model/getselfandchildrenlist.php
@@ -1,10 +1,14 @@
#!/usr/bin/env php
getSelfAndChildrenList();
cid=0
+- 测试id为2时获取自己的状态属性status @doing
+- 测试id为2时获取自己后代的个数 @3
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
diff --git a/module/programplan/test/model/getsiblings.php b/module/programplan/test/model/getsiblings.php
index 61dd21f418..121c69c9fa 100755
--- a/module/programplan/test/model/getsiblings.php
+++ b/module/programplan/test/model/getsiblings.php
@@ -1,11 +1,16 @@
#!/usr/bin/env php
getSiblings();
cid=0
-*/
+- 测试id为2时获取兄弟阶段的的名称属性name @阶段b
+- 测试id为2时获取自己兄弟阶段的个数 @1
+- 测试id为4时获取自己兄弟阶段的个数 @0
+
+*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
diff --git a/module/programplan/test/model/getstage.php b/module/programplan/test/model/getstage.php
index a8cc772f7c..37f8f16b75 100755
--- a/module/programplan/test/model/getstage.php
+++ b/module/programplan/test/model/getstage.php
@@ -1,10 +1,36 @@
#!/usr/bin/env php
getStage();
cid=0
+- 测试获取阶段2 产品2 all的名称
+ - @新阶段a子1;新阶段a子2;新阶段a子3
+ - 属性1 @2;2;2
+- 测试获取阶段2 产品2 parent id倒叙的名称
+ - @新阶段a子3;新阶段a子2;新阶段a子1
+ - 属性1 @2;2;2
+- 测试获取阶段2 产品2 parent的名称
+ - @新阶段a子1;新阶段a子3
+ - 属性1 @2;2
+- 测试获取阶段3 产品2 all的名称
+ - @新阶段a子1子1
+ - 属性1 @2
+- 测试获取阶段3 产品2 parent的名称
+ - @新阶段a子1子2
+ - 属性1 @2
+- 测试获取阶段5 产品2 all的名称
+ - @新阶段b子1;新阶段b子2
+ - 属性1 @2;2
+- 测试获取阶段5 产品2 parent的名称
+ - @新阶段b子1
+ - 属性1 @2
+- 测试获取阶段2 产品2 all id倒叙的名称
+ - @新阶段b子2;新阶段b子1
+ - 属性1 @2;2
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
diff --git a/module/programplan/test/model/getstageattribute.php b/module/programplan/test/model/getstageattribute.php
index 6f26a4302e..d9579729a3 100755
--- a/module/programplan/test/model/getstageattribute.php
+++ b/module/programplan/test/model/getstageattribute.php
@@ -1,10 +1,16 @@
#!/usr/bin/env php
getStageAttribute();
cid=0
+- 验证id为0的阶段属性 @0
+- 验证id为2的阶段属性 @review
+- 验证id为3的阶段属性 @release
+- 验证不存在的id 100 阶段属性 @0
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
diff --git a/module/programplan/test/model/isclickable.php b/module/programplan/test/model/isclickable.php
index ddee2052e7..5f794c56e4 100755
--- a/module/programplan/test/model/isclickable.php
+++ b/module/programplan/test/model/isclickable.php
@@ -6,6 +6,11 @@
title=测试 programplanModel::isClickable();
cid=0
+- 判断阶段为空时,是否有关闭的点击操作权限 @1
+- 判断阶段为空时,是否有创建的点击操作权限 @1
+- 判断阶段不为空时,是否有关闭的点击操作权限 @1
+- 判断阶段不为空并且该阶段下有任务,是否有创建的点击操作权限 @0
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
diff --git a/module/programplan/test/model/iscreatetask.php b/module/programplan/test/model/iscreatetask.php
index 4cb38e5953..e2884f5f9a 100755
--- a/module/programplan/test/model/iscreatetask.php
+++ b/module/programplan/test/model/iscreatetask.php
@@ -1,10 +1,16 @@
#!/usr/bin/env php
isCreateTask();
cid=0
+- 测试 id 为 -1 的阶段下是否创建了任务,结果为 1 @1
+- 测试 id 为 0 的阶段下是否创建了任务,结果为 1 @1
+- 测试 id 为 1 的阶段下是否创建了任务,结果为 0 @0
+- 测试 id 为 6 的阶段下是否创建了任务,结果为 0 @1
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
diff --git a/module/programplan/test/model/istopstage.php b/module/programplan/test/model/istopstage.php
index 5817892cab..68feb1de3b 100755
--- a/module/programplan/test/model/istopstage.php
+++ b/module/programplan/test/model/istopstage.php
@@ -6,6 +6,10 @@
title=测试programplanModel->isTopStage();
cid=0
+- 测试id为2判断是否为顶级阶段 @1
+- 测试id为4判断是否为顶级阶段 @0
+- 测试id为5判断是否为顶级阶段 @1
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
diff --git a/module/programplan/test/model/processplan.php b/module/programplan/test/model/processplan.php
index c56523fbc7..80f17fabdd 100755
--- a/module/programplan/test/model/processplan.php
+++ b/module/programplan/test/model/processplan.php
@@ -6,6 +6,21 @@
title=测试 programplanModel->processPlan();
cid=0
+- 测试id为1的瀑布项目
+ - 属性id @1
+ - 属性name @瀑布项目1
+ - 属性productName @瀑布产品1
+- 测试id为2的瀑布项目阶段
+ - 属性id @2
+ - 属性name @阶段a
+ - 属性productName @瀑布产品2
+ - 属性attribute @review
+- 测试id为3的瀑布项目阶段
+ - 属性id @3
+ - 属性name @阶段a子1
+ - 属性productName @瀑布产品2
+ - 属性attribute @release
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
diff --git a/module/programplan/test/model/processplans.php b/module/programplan/test/model/processplans.php
index f2d0e20660..4e483388a9 100755
--- a/module/programplan/test/model/processplans.php
+++ b/module/programplan/test/model/processplans.php
@@ -1,10 +1,31 @@
#!/usr/bin/env php
processPlans();
cid=0
+- 测试id为1的瀑布项目名称和所属产品
+ - 属性name @瀑布项目1
+ - 属性productName @瀑布产品1
+- 测试id为2的瀑布项目名称和所属产品
+ - 属性name @瀑布项目2
+ - 属性productName @瀑布产品2
+- 测试id为3的瀑布项目名称和所属产品
+ - 属性name @瀑布项目3
+ - 属性productName @瀑布产品2
+- 测试id为4的瀑布项目名称和所属产品
+ - 属性name @瀑布项目4
+ - 属性productName @瀑布产品2
+- 测试id为5的瀑布项目名称和所属产品
+ - 属性name @瀑布项目5
+ - 属性productName @瀑布产品2
+- 测试id为6的瀑布项目名称和所属产品
+ - 属性name @瀑布项目6
+ - 属性productName @瀑布产品2
+- 测试id不存在的瀑布项目 @0
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
diff --git a/module/programplan/test/model/savecustomsetting.php b/module/programplan/test/model/savecustomsetting.php
index 69b1e56efb..aa38acd539 100755
--- a/module/programplan/test/model/savecustomsetting.php
+++ b/module/programplan/test/model/savecustomsetting.php
@@ -1,10 +1,15 @@
#!/usr/bin/env php
saveCustomSetting();
cid=0
+- 比较 stageCustom 的值 @2
+- 比较 ganttFields 的值 @3
+- 比较 zooming 的值 @1
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
diff --git a/module/programplan/test/model/settreepath.php b/module/programplan/test/model/settreepath.php
index 0ea83ead84..7080e5822e 100755
--- a/module/programplan/test/model/settreepath.php
+++ b/module/programplan/test/model/settreepath.php
@@ -6,6 +6,13 @@
title=测试 programplanModel->setTreePath();
cid=0
+- 给stageID=2没有子阶段不走if设置path,grade
+ - 属性path @,1,2,
+ - 属性grade @ 1
+- 给stageID=9有子阶段走if设置path,grade
+ - 属性path @,7,8,9,
+ - 属性grade @ 3
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
@@ -18,7 +25,5 @@ $tester->loadModel('programplan');
$tester->programplan->setTreePath(2);
$tester->programplan->setTreePath(9);
-
r($tester->programplan->getByID(2)) && p('path|grade', '|') && e(',1,2,| 1'); // 给stageID=2没有子阶段不走if设置path,grade
r($tester->programplan->getByID(9)) && p('path|grade', '|') && e(',7,8,9,| 3'); // 给stageID=9有子阶段走if设置path,grade
-
diff --git a/module/programplan/test/model/update.php b/module/programplan/test/model/update.php
index 40ed6419f2..9eb8607e13 100755
--- a/module/programplan/test/model/update.php
+++ b/module/programplan/test/model/update.php
@@ -6,6 +6,10 @@
title=测试 programplanModel->update();
cid=0
+- 传入空参数 @0
+- 测试修改plan的 name 值属性name @修改后的阶段
+- 测试子阶段的 acl 值第0条的acl属性 @private
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
diff --git a/module/programplan/test/model/updatesubstageattr.php b/module/programplan/test/model/updatesubstageattr.php
index b7c09c56c4..457def6029 100755
--- a/module/programplan/test/model/updatesubstageattr.php
+++ b/module/programplan/test/model/updatesubstageattr.php
@@ -1,10 +1,16 @@
#!/usr/bin/env php
updateSubStageAttr();
cid=0
+- 测试更改 id 为 3 存在子阶段的阶段,attribute 更新值为 mix ,结果为 1 @1
+- 测试更改 id 为 5 无子阶段的阶段,更新 attribute 值为 design ,结果为 1 @1
+- 测试更改 id 为 2 存在子阶段的阶段,更新 attribute 值为 design ,结果为 design @design
+- 测试更改 id 为 3 存在子阶段,子阶段下也存在子阶段,更新 attribute 值为 design ,结果为 design @design
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
diff --git a/module/programplan/test/tao/buildganttdata4ipd.php b/module/programplan/test/tao/buildganttdata4ipd.php
index 8c43965619..b07cb42de3 100644
--- a/module/programplan/test/tao/buildganttdata4ipd.php
+++ b/module/programplan/test/tao/buildganttdata4ipd.php
@@ -6,6 +6,15 @@
title=测试 loadModel->buildGanttData4IPD()
cid=0
+- 禅道版本为开源版。 @0
+- gantt数据数。 @20
+- 禅道版本为IPD。
+ - 属性id @1-PP-1
+ - 属性reviewID @1
+ - 属性type @point
+ - 属性text @ 这个是评审或基线的标题1
+- selectCustom 不包含 point。 @0
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
diff --git a/module/programplan/test/tao/buildganttlinks.php b/module/programplan/test/tao/buildganttlinks.php
index 132f732424..b819f19f58 100644
--- a/module/programplan/test/tao/buildganttlinks.php
+++ b/module/programplan/test/tao/buildganttlinks.php
@@ -6,26 +6,59 @@
title=测试 loadModel->buildGanttLinks()
cid=0
+- 禅道版本为开源版,检查任务关系。 @0
+- 检查第一条任务关系
+ - 属性source @1-1
+ - 属性target @1-2
+ - 属性type @0
+- 检查第二条任务关系
+ - 属性source @2-2
+ - 属性target @2-3
+ - 属性type @2
+- 检查第三条任务关系
+ - 属性source @3-3
+ - 属性target @3-4
+ - 属性type @1
+- 检查第四条任务关系
+ - 属性source @1-11
+ - 属性target @1-12
+ - 属性type @1
+- 检查第五条任务关系
+ - 属性source @2-12
+ - 属性target @2-13
+ - 属性type @3
+- 检查第六条任务关系
+ - 属性source @3-13
+ - 属性target @3-14
+ - 属性type @0
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
su('admin');
-zdTable('relationoftasks')->gen(20);
-$project = zdTable('project');
-$project->type->range('stage');
-$project->attribute->range('devel');
-$project->begin->range('`2023-09-28`');
-$project->end->range('`2024-04-02`');
-$project->gen(10);
+$relationoftasks = zdTable('relationoftasks');
+$relationoftasks->id->range('1-100');
+$relationoftasks->execution->range('1-10');
+$relationoftasks->pretask->range('1-100');
+$relationoftasks->condition->range('end{2},begin{2}');
+$relationoftasks->task->range('2-100');
+$relationoftasks->action->range('begin,end');
+$relationoftasks->gen(20);
global $tester;
$tester->loadModel('programplan');
-$planIdList = $tester->programplan->dao->select('*')->from(TABLE_PROJECT)->where('type')->eq('stage')->fetchPairs('id', 'id');
+$planIdList = array(1,2,3);
$tester->programplan->config->edition = 'open';
r($tester->programplan->buildGanttLinks($planIdList)) && p() && e("0"); //禅道版本为开源版,检查任务关系。
$tester->programplan->config->edition = 'max';
-r($tester->programplan->buildGanttLinks($planIdList)) && p() && e("0"); //禅道版本为旗舰版,检查任务关系。
+$links = $tester->programplan->buildGanttLinks($planIdList);
+r($links[0]) && p('source,target,type') && e('1-1,1-2,0'); //检查第一条任务关系
+r($links[1]) && p('source,target,type') && e('2-2,2-3,2'); //检查第二条任务关系
+r($links[2]) && p('source,target,type') && e('3-3,3-4,1'); //检查第三条任务关系
+r($links[3]) && p('source,target,type') && e('1-11,1-12,1'); //检查第四条任务关系
+r($links[4]) && p('source,target,type') && e('2-12,2-13,3'); //检查第五条任务关系
+r($links[5]) && p('source,target,type') && e('3-13,3-14,0'); //检查第六条任务关系
diff --git a/module/programplan/test/tao/buildgroupdataforgantt.php b/module/programplan/test/tao/buildgroupdataforgantt.php
index 3a55d36e42..9ce7098d93 100644
--- a/module/programplan/test/tao/buildgroupdataforgantt.php
+++ b/module/programplan/test/tao/buildgroupdataforgantt.php
@@ -6,6 +6,11 @@
title=测试 loadModel->buildGroupDataForGantt()
cid=0
+- 检查构建分组Gantt数据。
+ - 属性id @1
+ - 属性type @group
+ - 属性text @开发
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
diff --git a/module/programplan/test/tao/buildplandataforgantt.php b/module/programplan/test/tao/buildplandataforgantt.php
index 6c4c3eb0a5..e50bb61b9a 100644
--- a/module/programplan/test/tao/buildplandataforgantt.php
+++ b/module/programplan/test/tao/buildplandataforgantt.php
@@ -6,6 +6,19 @@
title=测试 loadModel->buildPlanDataForGantt()
cid=0
+- 检查普通阶段,构建Gantt数据。
+ - 属性id @1
+ - 属性type @plan
+ - 属性text @项目集1
+ - 属性start_date @28-09-2023
+- 检查是否存在percent字段 @0
+- 里程碑阶段,并设置显示percent,检查构建数据。
+ - 属性id @1
+ - 属性type @plan
+ - 属性text @项目集1
+ - 属性start_date @28-09-2023
+ - 属性percent @10
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
diff --git a/module/programplan/test/tao/buildpointdataforgantt.php b/module/programplan/test/tao/buildpointdataforgantt.php
index 736f5478e6..bbfa642a72 100644
--- a/module/programplan/test/tao/buildpointdataforgantt.php
+++ b/module/programplan/test/tao/buildpointdataforgantt.php
@@ -6,6 +6,12 @@
title=测试 loadModel->buildPointDataForGantt()
cid=0
+- 禅道版本为IPD。
+ - 属性id @1-PP-1
+ - 属性reviewID @1
+ - 属性type @point
+ - 属性text @ 这个是评审或基线的标题1
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
diff --git a/module/programplan/test/tao/buildtaskdataforgantt.php b/module/programplan/test/tao/buildtaskdataforgantt.php
index 4e6906a6ec..8363ff2852 100644
--- a/module/programplan/test/tao/buildtaskdataforgantt.php
+++ b/module/programplan/test/tao/buildtaskdataforgantt.php
@@ -6,6 +6,14 @@
title=测试 loadModel->buildTaskDataForGantt()
cid=0
+- 检查构建分组Gantt数据。
+ - 属性id @1
+ - 属性type @task
+ - 属性text @1 开发任务11
+ - 属性owner_id @``
+ - 属性start_date @28-09-2023
+ - 属性parent @0
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
diff --git a/module/programplan/test/tao/buildtaskgroup.php b/module/programplan/test/tao/buildtaskgroup.php
index b3144844ca..9dfc075b33 100644
--- a/module/programplan/test/tao/buildtaskgroup.php
+++ b/module/programplan/test/tao/buildtaskgroup.php
@@ -6,6 +6,14 @@
title=测试 programplanTao->buildTaskGroup();
cid=0
+- 传入空数据 @0
+- 检查包含多人任务的admin的分组的任务数。 @4
+- 检查包含多人任务的user1的分组的任务数。 @4
+- 检查包含多人任务的user2的分组的任务数。 @3
+- 检查不包含多人任务的admin的分组的任务数。 @3
+- 检查不包含多人任务的user1的分组的任务数。 @3
+- 检查不包含多人任务的user2的分组的任务数。 @3
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
diff --git a/module/programplan/test/tao/computeorders.php b/module/programplan/test/tao/computeorders.php
index f3fb6d95e3..9e2eb3e1f6 100644
--- a/module/programplan/test/tao/computeorders.php
+++ b/module/programplan/test/tao/computeorders.php
@@ -6,6 +6,24 @@
title=测试 loadModel->computeOrders()
cid=0
+- 传入空参数 @0
+- 传入空orders参数
+ - @30
+ - 属性1 @35
+ - 属性2 @40
+ - 属性3 @45
+- 传入有部分orders参数
+ - @5
+ - 属性1 @30
+ - 属性2 @35
+ - 属性3 @40
+- 传入orders数量大于计划数
+ - @5
+ - 属性1 @10
+ - 属性2 @15
+ - 属性3 @20
+ - 属性4 @25
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
diff --git a/module/programplan/test/tao/getlinkproductsforcreate.php b/module/programplan/test/tao/getlinkproductsforcreate.php
index a650adac27..7c7288cd21 100644
--- a/module/programplan/test/tao/getlinkproductsforcreate.php
+++ b/module/programplan/test/tao/getlinkproductsforcreate.php
@@ -6,6 +6,13 @@
title=测试 loadModel->getLinkProductsForCreate()
cid=0
+- projectID=0, productID=0,检查产品数据。 @3
+- projectID=0, productID=0,检查分支数据。 @0;1;2;3;4
+- projectID=3, productID=0,检查产品数据。 @0
+- projectID=3, productID=0,检查分支数据。 @0
+- projectID=3, productID=3,检查产品数据。 @3
+- projectID=3, productID=3,检查分支数据。 @1
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
diff --git a/module/programplan/test/tao/getnewparentandaction.php b/module/programplan/test/tao/getnewparentandaction.php
index 69246628fb..6738759716 100644
--- a/module/programplan/test/tao/getnewparentandaction.php
+++ b/module/programplan/test/tao/getnewparentandaction.php
@@ -6,6 +6,11 @@
title=测试 programplanTao->computeNewParenAndAction();
cid=0
+- 返回状态为wait属性status @wait
+- 返回状态为closed属性status @closed
+- 返回状态为suspended属性status @suspended
+- 返回状态为doing属性status @doing
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/programplan.class.php';
diff --git a/module/programplan/test/tao/getparentstages.php b/module/programplan/test/tao/getparentstages.php
index be9b8a5750..38134e9f50 100644
--- a/module/programplan/test/tao/getparentstages.php
+++ b/module/programplan/test/tao/getparentstages.php
@@ -6,6 +6,10 @@
title=测试 programplanTao->getParentStages();
cid=0
+- 测试查询项目1产品2阶段10父阶段信息 @执行1-1
+- 测试查询项目1产品3阶段10父阶段信息 @执行1-1-1
+- 测试查询项目4产品6阶段10父阶段信息 @执行2-1-1
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
diff --git a/module/programplan/test/tao/getpointenddate.php b/module/programplan/test/tao/getpointenddate.php
index 19a47bf1c9..b4f3998cf2 100644
--- a/module/programplan/test/tao/getpointenddate.php
+++ b/module/programplan/test/tao/getpointenddate.php
@@ -6,6 +6,12 @@
title=测试 loadModel->getPointEndDate()
cid=0
+- 传入point->end不为空 @2023-09-28
+- 传入point->end为空 @2023-12-28
+- 传入point->category为DCP @2023-12-26
+- 传入point->category为TR @2023-12-21
+- 传入reviewDeadline含有taskEnd数据 @2023-12-18
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
diff --git a/module/programplan/test/tao/getreviewdeadline.php b/module/programplan/test/tao/getreviewdeadline.php
new file mode 100644
index 0000000000..02aceb09d0
--- /dev/null
+++ b/module/programplan/test/tao/getreviewdeadline.php
@@ -0,0 +1,25 @@
+#!/usr/bin/env php
+getReviewDeadline()
+cid=0
+
+- 传入空数据 @0
+- 获取五个工作日前的日期 @2023-12-22
+- 获取六个工作日前的日期 @2023-12-21
+- 获取零个工作日前的日期 @2023-12-29
+
+*/
+
+include dirname(__FILE__, 5). '/test/lib/init.php';
+su('admin');
+
+global $tester;
+$tester->loadModel('programplan');
+
+r($tester->programplan->getReviewDeadline('')) && p() && e('0'); //传入空数据
+r($tester->programplan->getReviewDeadline('2023-12-29')) && p() && e('2023-12-22'); //获取五个工作日前的日期
+r($tester->programplan->getReviewDeadline('2023-12-29', 6)) && p() && e('2023-12-21'); //获取六个工作日前的日期
+r($tester->programplan->getReviewDeadline('2023-12-29', 0)) && p() && e('2023-12-29'); //获取零个工作日前的日期
diff --git a/module/programplan/test/tao/getstagecount.php b/module/programplan/test/tao/getstagecount.php
index 92d045c985..4eeddb3ac3 100644
--- a/module/programplan/test/tao/getstagecount.php
+++ b/module/programplan/test/tao/getstagecount.php
@@ -6,6 +6,11 @@
title=测试 programplanTao->getStageCount();
cid=0
+- 传入空的planID。 @0
+- 传入不存在的planID。 @0
+- 传入planID=1。 @4
+- 传入planID=1, 并且是里程碑。 @2
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
diff --git a/module/programplan/test/tao/getstagelist.php b/module/programplan/test/tao/getstagelist.php
index 285b922a44..252c9d2d64 100755
--- a/module/programplan/test/tao/getstagelist.php
+++ b/module/programplan/test/tao/getstagelist.php
@@ -6,6 +6,10 @@
title=测试 loadModel->getStageList()
cid=0
+- 获取id为3下的阶段名称属性name @阶段a子1子1
+- 获取的不存的id和项目产品id 的阶段信息 @0
+- 获取id为1下的阶段条数 @2
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
diff --git a/module/programplan/test/tao/gettaskdatelimit.php b/module/programplan/test/tao/gettaskdatelimit.php
new file mode 100644
index 0000000000..4355d3c62e
--- /dev/null
+++ b/module/programplan/test/tao/gettaskdatelimit.php
@@ -0,0 +1,61 @@
+#!/usr/bin/env php
+getTaskDateLimit()
+cid=0
+
+- 传入未填写预计日期的任务数据
+ - 属性start @2023-09-21
+ - 属性end @2023-12-21
+ - 属性realBegan @``
+ - 属性realEnd @``
+- 传入未开始的任务数据
+ - 属性start @2023-09-28
+ - 属性end @2023-09-29
+ - 属性realBegan @``
+ - 属性realEnd @``
+- 传入进行中的任务数据
+ - 属性start @2023-10-01
+ - 属性end @2023-10-01
+ - 属性realBegan @2023-10-01
+ - 属性realEnd @``
+- 传入已完成的任务数据
+ - 属性start @2023-10-01
+ - 属性end @2023-10-02
+ - 属性realBegan @2023-10-01
+ - 属性realEnd @2023-10-02
+
+*/
+
+include dirname(__FILE__, 5). '/test/lib/init.php';
+su('admin');
+
+global $tester;
+$tester->loadModel('programplan');
+
+$execution = new stdclass();
+$execution->begin = '2023-09-21';
+$execution->end = '2023-12-21';
+
+$task = new stdclass();
+$task->estStarted = '';
+$task->deadline = '';
+$task->realStarted = '';
+$task->finishedDate = '';
+$task->status = 'wait';
+
+r($tester->programplan->getTaskDateLimit($task, $execution)) && p('start,end,realBegan,realEnd') && e('2023-09-21,2023-12-21,``,``'); //传入未填写预计日期的任务数据
+
+$task->estStarted = '2023-09-28';
+$task->deadline = '2023-09-29';
+r($tester->programplan->getTaskDateLimit($task)) && p('start,end,realBegan,realEnd') && e('2023-09-28,2023-09-29,``,``'); //传入未开始的任务数据
+
+$task->realStarted = '2023-10-01';
+$task->status = 'doing';
+r($tester->programplan->getTaskDateLimit($task)) && p('start,end,realBegan,realEnd') && e('2023-10-01,2023-10-01,2023-10-01,``'); //传入进行中的任务数据
+
+$task->finishedDate = '2023-10-02';
+$task->status = 'done';
+r($tester->programplan->getTaskDateLimit($task)) && p('start,end,realBegan,realEnd') && e('2023-10-01,2023-10-02,2023-10-01,2023-10-02'); //传入已完成的任务数据
diff --git a/module/programplan/test/tao/gettotalpercent.php b/module/programplan/test/tao/gettotalpercent.php
index 8145ab6ffe..290985868d 100755
--- a/module/programplan/test/tao/gettotalpercent.php
+++ b/module/programplan/test/tao/gettotalpercent.php
@@ -35,6 +35,12 @@ r($programplan->getTotalPercentTest($stageIDList[3])) && p() && e('24');
title=测试 programplanTao->getTotalPercent();
cid=0
+- 统计普通阶段下百分比。 @70
+- 统计含有子阶段百分比。 @80
+- 统计子阶段百分比。 @100
+- 统计只有一个阶段百分比。 @0
+- 统计父阶段下百分比。 @90
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
diff --git a/module/programplan/test/tao/initganttplans.php b/module/programplan/test/tao/initganttplans.php
index 2138a6692d..64f64d544b 100644
--- a/module/programplan/test/tao/initganttplans.php
+++ b/module/programplan/test/tao/initganttplans.php
@@ -6,6 +6,25 @@
title=测试 loadModel->initGanttPlans()
cid=0
+- 传入空数据,检查datas数据。 @0
+- 传入空数据,检查stageIndex数据。 @0
+- 传入空数据,检查planIdList数据。 @0
+- 传入空数据,检查reviewDeadline数据。 @0
+- 传入正常数据,检查 data 数据数量。 @10
+- 传入正常数据,检查 data数据的第一条信息。
+ - 第1条的id属性 @1
+ - 第1条的type属性 @plan
+ - 第1条的start_date属性 @28-09-2023
+ - 第1条的bar_height属性 @24
+- 传入正常数据,检查 stageIndex的第一条信息。
+ - 第1条的planID属性 @1
+ - 第1条的parent属性 @0
+ - 第1条的totalEstimate属性 @0
+ - 第1条的totalConsumed属性 @0
+ - 第1条的totalReal属性 @0
+- 传入正常数据,检查 planIdList 数据数量。 @10
+- 传入正常数据,检查 reviewDeadline的第一条数据。第1条的stageEnd属性 @2024-04-02
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
diff --git a/module/programplan/test/tao/insertprojectspec.php b/module/programplan/test/tao/insertprojectspec.php
index d2698a8650..00d113aedf 100644
--- a/module/programplan/test/tao/insertprojectspec.php
+++ b/module/programplan/test/tao/insertprojectspec.php
@@ -6,6 +6,14 @@
title=测试 loadModel->insertProjectSpec()
cid=0
+- 传入空参数 @0
+- 检查插入的spec数据。
+ - 属性name @Test plan
+ - 属性version @3
+ - 属性milestone @1
+ - 属性begin @2023-09-28
+ - 属性end @2024-04-28
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
diff --git a/module/programplan/test/tao/insertstage.php b/module/programplan/test/tao/insertstage.php
index 19623d6b7c..dbcfca542d 100644
--- a/module/programplan/test/tao/insertstage.php
+++ b/module/programplan/test/tao/insertstage.php
@@ -6,6 +6,35 @@
title=测试 programplanTao->insertStage();
cid=0
+- 测试值传入plan数据
+ - 属性id @3
+ - 属性name @Test Stage
+ - 属性begin @2023-12-28
+ - 属性end @2024-03-28
+ - 属性parent @0
+ - 属性path @,3,
+ - 属性acl @private
+- 测试创建普通阶段。
+ - 属性id @4
+ - 属性project @1
+ - 属性name @Test Stage
+ - 属性begin @2023-12-28
+ - 属性end @2024-03-28
+ - 属性parent @1
+ - 属性path @,1,4,
+ - 属性grade @1
+ - 属性acl @private
+- 测试创建子阶段。
+ - 属性id @5
+ - 属性project @1
+ - 属性name @Test Stage
+ - 属性begin @2023-12-28
+ - 属性end @2024-03-28
+ - 属性parent @4
+ - 属性path @,1,4,5,
+ - 属性grade @2
+ - 属性acl @private
+
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
su('admin');
diff --git a/module/programplan/test/tao/setstagesummary.php b/module/programplan/test/tao/setstagesummary.php
new file mode 100644
index 0000000000..03c65f3e9d
--- /dev/null
+++ b/module/programplan/test/tao/setstagesummary.php
@@ -0,0 +1,35 @@
+#!/usr/bin/env php
+setStageSummary()
+cid=0
+
+- 传入空数据 @0
+- 传入gantt空数据 @0
+- 传入正常数据
+ - 第1条的progress属性 @0.6
+ - 第1条的taskProgress属性 @60%
+ - 第1条的estimate属性 @110
+ - 第1条的consumed属性 @60
+
+*/
+
+include dirname(__FILE__, 5). '/test/lib/init.php';
+su('admin');
+
+global $tester;
+$tester->loadModel('programplan');
+
+$stages = array();
+$stages['1']['totalReal'] = 100;
+$stages['1']['totalEstimate'] = 110;
+$stages['1']['totalConsumed'] = 60;
+
+$ganttData = array();
+$ganttData['data'][1] = new stdclass;
+
+r($tester->programplan->setStageSummary(array(), array())) && p() && e('0'); //传入空数据
+r($tester->programplan->setStageSummary(array(), $stages)) && p() && e('0'); //传入gantt空数据
+r($tester->programplan->setStageSummary($ganttData, $stages)['data']) && p('1:progress,taskProgress,estimate,consumed') && e('0.6,60%,110,60'); //传入正常数据
diff --git a/module/programplan/test/tao/settask.php b/module/programplan/test/tao/settask.php
index 7d9c87b42b..275526187a 100644
--- a/module/programplan/test/tao/settask.php
+++ b/module/programplan/test/tao/settask.php
@@ -6,6 +6,23 @@
title=测试 loadModel->setTask()
cid=0
+- 传入空数据,检查datas数据。 @0
+- 传入空数据,检查stageIndex数据。 @0
+- 传入空任务,检查data数据数。 @10
+- 传入任务, selectCustom为空,检查data数据数。 @10
+- 传入正常数据,检查 data数据数量。 @30
+- 传入正常数据,检查 data数据的第一条信息。
+ - 属性id @1-1
+ - 属性type @task
+ - 属性start_date @28-09-2023
+ - 属性bar_height @24
+- 传入正常数据,检查 stageIndex的第一条信息。
+ - 第1条的planID属性 @1
+ - 第1条的parent属性 @0
+ - 第1条的totalEstimate属性 @10
+ - 第1条的totalConsumed属性 @6
+ - 第1条的totalReal属性 @6
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
diff --git a/module/programplan/test/tao/settaskbaseline.php b/module/programplan/test/tao/settaskbaseline.php
index 94d1e55a1b..a10488f501 100644
--- a/module/programplan/test/tao/settaskbaseline.php
+++ b/module/programplan/test/tao/settaskbaseline.php
@@ -6,6 +6,18 @@
title=测试 loadModel->setTaskBaseline()
cid=0
+- 传入空参数 @0
+- 只传入 oldTasks 参数 @0
+- 只传入 newTasks 参数
+ - 第1条的name属性 @New task1
+ - 第1条的version属性 @3
+ - 第1条的deadline属性 @2023-11-28
+- 只传入正确参数,检查返回数据
+ - 第1条的name属性 @Old task1
+ - 第1条的version属性 @2
+ - 第1条的deadline属性 @2023-12-28
+- 只传入正确参数,检查不存在的返回数据 @0
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';
diff --git a/module/programplan/test/tao/updaterow.php b/module/programplan/test/tao/updaterow.php
index f3fccbdf8c..676159e318 100755
--- a/module/programplan/test/tao/updaterow.php
+++ b/module/programplan/test/tao/updaterow.php
@@ -6,6 +6,20 @@
title=测试 loadModel->updateRow()
cid=0
+- 传入空参数 @0
+- 检查未编辑前的数据。
+ - 属性name @执行3-1
+ - 属性attribute @``
+ - 属性version @0
+- 测试修改plan的 name 和 version 值。
+ - 属性name @修改后的阶段
+ - 属性version @1
+- 测试查看项目下的spec信息。 @1
+- 测试修改plan的 attribute 值。
+ - 属性name @修改后的阶段
+ - 属性attribute @devel
+ - 属性version @1
+
*/
include dirname(__FILE__, 5). '/test/lib/init.php';