* add for unit test.

This commit is contained in:
wangyidong
2022-08-29 09:07:54 +08:00
parent 7891d77342
commit 5f4f284a2b
4 changed files with 127 additions and 8 deletions
+2 -2
View File
@@ -2793,8 +2793,8 @@ class taskModel extends model
/* Check for add effort. */
if(empty($effort))
{
if($task->mode == 'linear' and strpos('|done|done|closed|cancel|pause|', "|{$task->status}|") !== false) return false;
$members = array_column($task->team, 'account');
if($task->mode == 'linear' and strpos('|done|closed|cancel|pause|', "|{$task->status}|") !== false) return false;
$members = array_map(function($member){ return $member->account; }, $task->team);
if(!in_array($this->app->user->account, $members)) return false;
if($task->mode == 'linear' and $this->app->user->account != $task->assignedTo) return false;
return true;
+20 -4
View File
@@ -195,7 +195,7 @@ class taskTest
return $object[1];
}
public function startTest($taskID,$param = array())
public function startTest($taskID, $param = array())
{
$createFields = array( 'status' => 'doing', 'consumed' => '9', 'assignedTo' => '', 'comment' => '9', 'realStarted' => '', 'left' => '3');
foreach($createFields as $field => $defaultValue) $_POST[$field] = $defaultValue;
@@ -650,12 +650,14 @@ class taskTest
* Test get task estimate.
*
* @param int $taskID
* @param string $account
* @param string $append
* @access public
* @return object
*/
public function getTaskEstimateTest($taskID)
public function getTaskEstimateTest($taskID, $account = '', $append = '')
{
$object = $this->objectModel->getTaskEstimate($taskID);
$object = $this->objectModel->getTaskEstimate($taskID, $account, $append);
if(dao::isError())
{
$error = dao::getError();
@@ -1386,7 +1388,7 @@ class taskTest
* @access public
* @return string
*/
public function getTeamByAccount($users, $account, array('filter' => 'done'))
public function getTeamByAccount($users, $account, $filter = array('filter' => 'done'))
{
$object = $this->objectModel->getTeamByAccount($users, $account, $filter);
if(empty($object)) return '_';
@@ -1407,6 +1409,20 @@ class taskTest
return empty($assignedTo) ? 'null' : $assignedTo;
}
/**
* Test for can operate effort;
*
* @param object $task
* @param object $effort
* @access public
* @return bool
*/
public function canOperateEffort($task, $effort = null)
{
$result = $this->objectModel->canOperateEffort($task, $effort);
return $result ? 1 : 0;
}
/**
* Test get task's team member pairs.
*
+103
View File
@@ -0,0 +1,103 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/task.class.php';
su('admin');
/**
title=taskModel->canOperateEffort();
cid=1
pid=1
判断非多人任务 >> 1
判断已完成的串行多人任务并且不判断日志 >> 0
判断已关闭的串行多人任务并且不判断日志 >> 0
判断已取消的串行多人任务并且不判断日志 >> 0
判断已暂停的串行多人任务并且不判断日志 >> 0
判断当前用户不在多人任务团队成员列表中 >> 0
判断串行多人任务的指派给不是当前用户 >> 0
判断串行多人任务的指派给是当前用户 >> 1
判断当前用户在并行多人任务团队成员列表中 >> 1
判断已完成多人任务并且日志创建者和当前用户一致 >> 1
判断已完成多人任务并且日志创建者和当前用户不一致 >> 0
判断已关闭的串行多人任务并且判断日志 >> 0
判断已取消的串行多人任务并且判断日志 >> 0
判断已暂停的串行多人任务并且判断日志 >> 0
判断进行中的串行多人任务并且当前日志创建者不是当前用户 >> 0
判断进行中的串行多人任务并且当前日志创建者是当前用户 >> 1
*/
$user = new stdclass();
$user->account = 'dev1';
$user->status = 'wait';
$user->order = '1';
$users[] = $user;
$user = new stdclass();
$user->account = 'dev2';
$user->status = 'wait';
$user->order = '2';
$users[] = $user;
$task = new stdclass();
$task->mode = '';
$task->openedBy = 'dev1';
$task->assignedTo = 'admin';
$taskTest = new taskTest();
r($taskTest->canOperateEffort($task)) && p() && e('1'); //判断非多人任务
$task->mode = 'linear';
$task->team = $users;
$task->status = 'done';
r($taskTest->canOperateEffort($task)) && p() && e('0'); //判断已完成的串行多人任务并且不判断日志
$task->status = 'closed';
r($taskTest->canOperateEffort($task)) && p() && e('0'); //判断已关闭的串行多人任务并且不判断日志
$task->status = 'cancel';
r($taskTest->canOperateEffort($task)) && p() && e('0'); //判断已取消的串行多人任务并且不判断日志
$task->status = 'pause';
r($taskTest->canOperateEffort($task)) && p() && e('0'); //判断已暂停的串行多人任务并且不判断日志
$task->status = 'wait';
r($taskTest->canOperateEffort($task)) && p() && e('0'); //判断当前用户不在多人任务团队成员列表中
$user = new stdclass();
$user->account = 'admin';
$user->status = 'wait';
$user->order = '0';
$users[] = $user;
$task->mode = 'linear';
$task->assignedTo = 'dev1';
$task->team = $users;
r($taskTest->canOperateEffort($task)) && p() && e('0'); //判断串行多人任务的指派给不是当前用户
$task->assignedTo = 'admin';
r($taskTest->canOperateEffort($task)) && p() && e('1'); //判断串行多人任务的指派给是当前用户
$task->mode = 'multi';
r($taskTest->canOperateEffort($task)) && p() && e('1'); //判断当前用户在并行多人任务团队成员列表中
$effort = new stdclass();
$effort->account = 'admin';
$task->mode = 'linear';
$task->status = 'done';
r($taskTest->canOperateEffort($task, $effort)) && p() && e('1'); //判断已完成多人任务并且日志创建者和当前用户一致
$effort->account = 'dev1';
r($taskTest->canOperateEffort($task, $effort)) && p() && e('0'); //判断已完成多人任务并且日志创建者和当前用户不一致
$task->mode = 'linear';
$task->status = 'closed';
r($taskTest->canOperateEffort($task, $effort)) && p() && e('0'); //判断已关闭的串行多人任务并且判断日志
$task->status = 'cancel';
r($taskTest->canOperateEffort($task, $effort)) && p() && e('0'); //判断已取消的串行多人任务并且判断日志
$task->status = 'pause';
r($taskTest->canOperateEffort($task, $effort)) && p() && e('0'); //判断已暂停的串行多人任务并且判断日志
$task->status = 'doing';
r($taskTest->canOperateEffort($task, $effort)) && p() && e('0'); //判断进行中的串行多人任务并且当前日志创建者不是当前用户
$effort->account = 'admin';
r($taskTest->canOperateEffort($task, $effort)) && p() && e('1'); //判断进行中的串行多人任务并且当前日志创建者是当前用户
+2 -2
View File
@@ -85,7 +85,7 @@ $user2->estimate = 2;
$user2->consumed = 2;
$user2->left = 2;
$team = array('po82' => $user1, 'user92' => $user2);
$team = array($user1, $user2);
$autoStatusList = array(true, false);
@@ -102,4 +102,4 @@ r($task->computeHours4MultipleTest($task5, $task6, $team)) && p('id,ass
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和团队计算多人工时
$db->restoreDB();
$db->restoreDB();