* add for unit test.
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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'); //判断进行中的串行多人任务并且当前日志创建者是当前用户
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user