From 201aa2f2572b8b8ab7afa06c2edce032603c4c2c Mon Sep 17 00:00:00 2001 From: liumengyi Date: Thu, 10 Mar 2022 14:08:54 +0800 Subject: [PATCH 1/2] * Add auto test of computeHours4Multiple. --- test/class/task.class.php | 15 ++++ test/data/teamtask.yaml | 99 ++++++++++++++++++++ test/data/zentao/config.php | 1 + test/model/task/computeHours4Multiple.php | 105 ++++++++++++++++++++++ 4 files changed, 220 insertions(+) create mode 100644 test/data/teamtask.yaml mode change 100644 => 100755 test/model/task/computeHours4Multiple.php diff --git a/test/class/task.class.php b/test/class/task.class.php index 6c40451c51..9a884c43d8 100644 --- a/test/class/task.class.php +++ b/test/class/task.class.php @@ -607,4 +607,19 @@ class taskTest return isset($parentObject) ? $parentObject : $object; } } + + public function computeHours4MultipleTest($oldTask, $task = null, $team = array(), $autoStatus = true) + { + $result = $this->objectModel->computeHours4Multiple($oldTask, $task, $team, $autoStatus); + + if(dao::isError()) + { + return dao::getError(); + } + else + { + $object = $this->objectModel->getById($oldTask->id); + return !empty($team) ? $result : $object; + } + } } diff --git a/test/data/teamtask.yaml b/test/data/teamtask.yaml new file mode 100644 index 0000000000..613b5f2963 --- /dev/null +++ b/test/data/teamtask.yaml @@ -0,0 +1,99 @@ +title: table zt_team +desc: "团队" +author: automated export +version: "1.0" +fields: + - field: id + note: "ID" + range: 911-1000 + prefix: "" + postfix: "" + loop: 0 + format: "" + - field: root + note: "任务ID" + range: 1,901-909 + prefix: "" + postfix: "" + loop: 0 + format: "" + - field: type + note: "项目类型" + range: 'task' + prefix: "" + postfix: "" + loop: 0 + format: "" + - field: account + note: "用户账号" + fields: + - field: account1 + range: po,user,admin + - field: account2 + range: 82,92,'' + prefix: "" + postfix: "" + loop: 0 + format: "" + - field: role + note: "角色" + range: 研发{99},测试{100},项目经理{100},产品经理{5} + prefix: "" + postfix: "" + loop: 0 + format: "" + - field: limited + note: "受限用户" + range: no + prefix: "" + postfix: "" + loop: 0 + format: "" + - field: join + note: "加盟日" + range: Y-m-d + prefix: "" + type: timestamp + format: "YYYY-MM-DD" + - field: days + note: "可用工作日" + range: 1-50:R + prefix: "" + postfix: "" + loop: 0 + format: "" + - field: hours + note: "可用工时/天" + range: 1-8:R + prefix: "" + postfix: "" + loop: 0 + format: "" + - field: estimate + note: "" + range: 1-3 + prefix: "" + postfix: "" + loop: 0 + format: "" + - field: consumed + note: "" + range: 1-3 + prefix: "" + postfix: "" + loop: 0 + format: "" + - field: left + note: "" + range: 1-3 + prefix: "" + postfix: "" + loop: 0 + format: "" + - field: order + note: "排序" + range: 0 + prefix: "" + postfix: "" + loop: 0 + format: "" diff --git a/test/data/zentao/config.php b/test/data/zentao/config.php index 498dec5383..fdeaf20f2d 100644 --- a/test/data/zentao/config.php +++ b/test/data/zentao/config.php @@ -28,6 +28,7 @@ $builder->branch = array('rows' => 240, 'extends' => array('branch')); $builder->projectproduct = array('rows' => 200, 'extends' => array('projectproduct')); $builder->team = array('rows' => 400, 'extends' => array('team')); +$builder->teamtask = array('rows' => 20, 'extends' => array('team', 'teamtask')); $builder->stakeholder = array('rows' => 1, 'extends' => array('stakeholder')); $builder->stageson = array('rows' => 30, 'extends' => array('project', 'executionson')); diff --git a/test/model/task/computeHours4Multiple.php b/test/model/task/computeHours4Multiple.php old mode 100644 new mode 100755 index e69de29bb2..c4bae45b89 --- a/test/model/task/computeHours4Multiple.php +++ b/test/model/task/computeHours4Multiple.php @@ -0,0 +1,105 @@ +#!/usr/bin/env php +computeHours4Multiple(); +cid=1 +pid=1 + +task状态为wait只有老task计算多人工时 >> 1,po82,wait,3,3,3 +task状态为wait有新老task计算多人工时 >> 1,po82,wait,3,3,3 +task状态为wait有新老task和团队计算多人工时 >> 1,po82,doing,3,3,3 +task状态为done只有老task计算多人工时 >> 903,po82,done,3,3,3 +task状态为done有新老task计算多人工时 >> 903,po82,done,3,3,3 +task状态为done有新老task和团队计算多人工时 >> 903,po82,doing,3,3,3 +task状态为pause只有老task计算多人工时 >> 910,,pause,9,12,9 +task状态为pause有新老task计算多人工时 >> 910,,pause,9,12,9 +task状态为pause只有老task计算多人工时 >> 910,po82,doing,3,3,3 +老task不存在的情况有新老task和团队计算多人工时 >> 0 +老task不存在的情况有新老task计算多人工时 >> 0 +新task不存在的情况有新老task和团队计算多人工时 >> 10001,po82,doing,3,3,3 + + + */ +$task1 = new stdclass(); +$task1->id = 1; +$task1->status = 'wait'; +$task1->assignedTo = ''; +$task1->openedBy = ''; + +$task2 = new stdclass(); +$task2->id = 1; +$task2->status = 'wait'; +$task2->assignedTo = 'user92'; +$task2->openedBy = ''; + +$task3 = new stdclass(); +$task3->id = 903; +$task3->status = 'done'; +$task3->assignedTo = ''; +$task3->openedBy = ''; + +$task4 = new stdclass(); +$task4->id = 903; +$task4->status = 'done'; +$task4->assignedTo = 'po82'; +$task4->openedBy = ''; + +$task5 = new stdclass(); +$task5->id = 910; +$task5->status = 'pause'; +$task5->assignedTo = ''; +$task5->openedBy = ''; + +$task6 = new stdclass(); +$task6->id = 910; +$task6->status = 'pause'; +$task6->assignedTo = ''; +$task6->openedBy = ''; + +$task7 = new stdclass(); +$task7->id = 100001; +$task7->status = 'done'; +$task7->assignedTo = ''; +$task7->openedBy = ''; + +$task8 = new stdclass(); +$task8->id = 10001; +$task8->status = 'wait'; +$task8->assignedTo = ''; +$task8->openedBy = ''; + +$user1 = new stdclass(); +$user1->account = 'po82'; +$user1->estimate = 1; +$user1->consumed = 1; +$user1->left = 1; + +$user2 = new stdclass(); +$user2->account = 'user93'; +$user2->estimate = 2; +$user2->consumed = 2; +$user2->left = 2; + +$team = array('po82' => $user1, 'user93' => $user2); + +$autoStatusList = array(true, false); + +$task = new taskTest(); +r($task->computeHours4MultipleTest($task1)) && p('id,assignedTo,status,estimate,consumed,left') && e('1,po82,wait,3,3,3'); // task状态为wait只有老task计算多人工时 +r($task->computeHours4MultipleTest($task1, $task2)) && p('id,assignedTo,status,estimate,consumed,left') && e('1,po82,wait,3,3,3'); // task状态为wait有新老task计算多人工时 +r($task->computeHours4MultipleTest($task1, $task2, $team)) && p('id,assignedTo,status,estimate,consumed,left') && e('1,po82,doing,3,3,3'); // task状态为wait有新老task和团队计算多人工时 +r($task->computeHours4MultipleTest($task3)) && p('id,assignedTo,status,estimate,consumed,left') && e('903,po82,done,3,3,3'); // task状态为done只有老task计算多人工时 +r($task->computeHours4MultipleTest($task3, $task4)) && p('id,assignedTo,status,estimate,consumed,left') && e('903,po82,done,3,3,3'); // task状态为done有新老task计算多人工时 +r($task->computeHours4MultipleTest($task3, $task4, $team)) && p('id,assignedTo,status,estimate,consumed,left') && e('903,po82,doing,3,3,3'); // task状态为done有新老task和团队计算多人工时 +r($task->computeHours4MultipleTest($task5)) && p('id,assignedTo,status,estimate,consumed,left') && e('910,,pause,9,12,9'); // task状态为pause只有老task计算多人工时 +r($task->computeHours4MultipleTest($task5, $task1, array(), false)) && p('id,assignedTo,status,estimate,consumed,left') && e('910,,pause,9,12,9'); // task状态为pause有新老task计算多人工时 +r($task->computeHours4MultipleTest($task5, $task6, $team)) && p('id,assignedTo,status,estimate,consumed,left') && e('910,po82,doing,3,3,3'); // task状态为pause只有老task计算多人工时 +r($task->computeHours4MultipleTest($task7)) && p('id,assignedTo,status,estimate,consumed,left') && e('0'); // 老task不存在的情况有新老task和团队计算多人工时 +r($task->computeHours4MultipleTest($task7, $task8)) && p('id,assignedTo,status,estimate,consumed,left') && e('0'); // 老task不存在的情况有新老task计算多人工时 +r($task->computeHours4MultipleTest($task1, $task8, $team)) && p('id,assignedTo,status,estimate,consumed,left') && e('10001,po82,doing,3,3,3'); // 新task不存在的情况有新老task和团队计算多人工时 +system("./ztest init"); From 74ad0e261bafb189f39935562fe46e3392f35a82 Mon Sep 17 00:00:00 2001 From: liumengyi Date: Thu, 10 Mar 2022 14:58:09 +0800 Subject: [PATCH 2/2] * Add teamtask.yaml. --- test/data/zentao/processor.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/data/zentao/processor.php b/test/data/zentao/processor.php index 66d3117c32..b990c14bed 100644 --- a/test/data/zentao/processor.php +++ b/test/data/zentao/processor.php @@ -148,6 +148,11 @@ class Processor */ private function initTask() { + $parentList = $this->dao->select('parent')->from(TABLE_TASK)->where('parent')->gt(0)->fetchAll('parent'); + $parentIDList = array_keys($parentList); + $parentID = implode(',', $parentIDList); + + $this->dao->update(TABLE_TASK)->set('parent')->eq(-1)->where('id')->in($parentID)->andWhere('deleted')->eq(0)->exec(); } /**