* Add test case for create task.

This commit is contained in:
tianshujie
2023-05-06 15:59:08 +08:00
parent 92fe556a76
commit e258becec8
5 changed files with 156 additions and 3 deletions
+2 -2
View File
@@ -66,7 +66,7 @@ class task extends control
if(!empty($_POST))
{
/* Prepare the data information before creating the task. */
$result = $this->prepareCreate($executionID, (float)$this->post->estimate, $this->post->estStarted, $this->post->deadline, (bool)$this->post->selectTestStory);
$result = $this->taskZen->prepareCreate($executionID, (float)$this->post->estimate, $this->post->estStarted, $this->post->deadline, (bool)$this->post->selectTestStory);
if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError()));
list($task, $testTasks, $existTaskID) = $result;
@@ -493,7 +493,7 @@ class task extends control
$execution = $this->execution->getById($task->execution);
if(!isonlybody() and $execution->type == 'kanban')
{
setcookie('taskToOpen', $taskID, 0, $this->config->webRoot, '', false, true);
setcookie('taskToOpen', $taskID, 0, $this->config->webRoot, '', $this->config->cookieSecure, true);
return print(js::locate($this->createLink('execution', 'kanban', "executionID=$execution->id")));
}
+3 -1
View File
@@ -4002,6 +4002,8 @@ class taskModel extends model
*/
public function setTaskFiles(array $taskFiles, int $taskID): array
{
if(!empty($taskFiles) and !$taskID) return array();
/* If taskFiles is not empty, create task files. */
if(!empty($taskFiles))
{
@@ -4015,7 +4017,7 @@ class taskModel extends model
else
{
$taskFileTitle = $this->loadModel('file')->saveUpload('task', $taskID);
$taskFiles = $this->dao->select('*')->from(TABLE_FILE)->where('id')->in(array_keys($taskFileTitle))->fetchAll('id');
$taskFiles = $taskFileTitle ? $this->dao->select('*')->from(TABLE_FILE)->where('id')->in(array_keys($taskFileTitle))->fetchAll('id') : array();
foreach($taskFiles as $fileID => $taskFile) unset($taskFiles[$fileID]->id);
}
+45
View File
@@ -0,0 +1,45 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . "/test/lib/init.php";
include dirname(__FILE__, 2) . '/task.class.php';
zdTable('task')->gen(1);
zdTable('taskspec')->gen(1);
/**
title=taskModel->doCreate();
timeout=0
cid=2
*/
$devel = array('execution' => 101, 'name' => '开发任务一', 'type' => 'devel', 'estimate' => 1, 'version' => 1, 'estStarted' => null, 'deadline' => null);
$design = array('execution' => 101, 'name' => '设计任务一', 'type' => 'design', 'estimate' => 1, 'version' => 1, 'estStarted' => '2023-04-01', 'deadline' => null);
$request = array('execution' => 101, 'name' => '需求任务一', 'type' => 'request', 'estimate' => 1, 'version' => 1, 'estStarted' => null, 'deadline' => '2024-01-01');
$test = array('execution' => 101, 'name' => '测试任务一', 'type' => 'test', 'estimate' => 1, 'version' => 1, 'estStarted' => null, 'deadline' => null);
$study = array('execution' => 101, 'name' => '研究任务一', 'type' => 'study', 'estimate' => 1, 'version' => 1, 'estStarted' => '2023-04-01', 'deadline' => '2024-01-01');
$discuss = array('execution' => 101, 'name' => '讨论任务一', 'type' => 'discuss', 'estimate' => '', 'version' => 1);
$ui = array('execution' => 101, 'name' => '界面任务一', 'type' => 'ui', 'estimate' => 1, 'version' => 1);
$affair = array('execution' => 101, 'name' => '事务任务一', 'type' => 'affair', 'estimate' => 1, 'version' => 1);
$misc = array('execution' => 101, 'name' => '其他任务一', 'type' => 'misc', 'estimate' => 1, 'version' => 1);
$noexecution = array('execution' => 0, 'name' => '特殊任务一', 'type' => 'devel', 'estStarted' => '2021-04-10', 'deadline' => '2022-03-19', 'estimate' => 1, 'version' => 1);
$noname = array('execution' => 101, 'name' => '', 'type' => 'devel', 'estimate' => 1, 'version' => 1);
$notype = array('execution' => 101, 'name' => '特殊任务二', 'type' => '', 'estimate' => 1, 'version' => 1);
$errorEstimate = array('execution' => 101, 'name' => '特殊任务三', 'type' => 'devel', 'estimate' => '2a', 'version' => 1);
$task = new taskTest();
r($task->doCreateObject($devel)) && p('name,execution,type,estimate,version,estStarted,deadline') && e('开发任务一,101,devel,1,1,0000-00-00,0000-00-00'); // 测试正常的创建开发任务
r($task->doCreateObject($design)) && p('name,execution,type,estimate,version,estStarted,deadline') && e('设计任务一,101,design,1,1,2023-04-01,0000-00-00'); // 测试正常的创建设计任务
r($task->doCreateObject($request)) && p('name,execution,type,estimate,version,estStarted,deadline') && e('需求任务一,101,request,1,1,0000-00-00,2024-01-01'); // 测试正常的创建需求任务
r($task->doCreateObject($test)) && p('name,execution,type,estimate,version,estStarted,deadline') && e('测试任务一,101,test,1,1,0000-00-00,0000-00-00'); // 测试正常的创建测试任务
r($task->doCreateObject($study)) && p('name,execution,type,estimate,version,estStarted,deadline') && e('研究任务一,101,study,1,1,2023-04-01,2024-01-01'); // 测试正常的创建研究任务
r($task->doCreateObject($discuss)) && p('name,execution,type,estimate,version,estStarted,deadline') && e('讨论任务一,101,discuss,0,1,2021-01-10,2021-03-19'); // 测试正常的创建讨论任务
r($task->doCreateObject($ui)) && p('name,execution,type,estimate,version,estStarted,deadline') && e('界面任务一,101,ui,1,1,2021-01-10,2021-03-19'); // 测试正常的创建界面任务
r($task->doCreateObject($affair)) && p('name,execution,type,estimate,version,estStarted,deadline') && e('事务任务一,101,affair,1,1,2021-01-10,2021-03-19'); // 测试正常的创建事务任务
r($task->doCreateObject($misc)) && p('name,execution,type,estimate,version,estStarted,deadline') && e('其他任务一,101,misc,1,1,2021-01-10,2021-03-19'); // 测试正常的创建其他任务
r($task->doCreateObject($noexecution)) && p('execution:0') && e('『所属执行』不能为空。'); // 测试不输入执行创建任务
r($task->doCreateObject($noname)) && p('name:0') && e('『任务名称』不能为空。'); // 测试不输入名称创建任务
r($task->doCreateObject($notype)) && p('type:0') && e('『任务类型』不能为空。'); // 测试不输入类型创建任务
r($task->doCreateObject($errorEstimate)) && p('estimate:0') && e('『最初预计』应当是数字,可以是小数。'); // 测试不输入类型创建任务
+38
View File
@@ -0,0 +1,38 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . "/test/lib/init.php";
include dirname(__FILE__, 2) . '/task.class.php';
$task = zdTable('task');
$task->id->range('1-6');
$task->name->prefix('任务')->range('1-6');
$task->gen(6);
$file = zdTable('file');
$file->id->range('1-10');
$file->title->prefix('附件')->range('1-10');
$file->objectType->range('task');
$file->objectID->range('1-5');
$file->gen(10);
/**
title=taskModel->setTaskFiles();
timeout=0
cid=1
*/
$taskIdList = range(1, 5);
$taskTester = new taskTest();
$emptyData = $taskTester->setTaskFilesTest(array(), 0);
$taskFiles = $taskTester->setTaskFilesTest(array(), 5);
$emptyTaskID = $taskTester->setTaskFilesTest($taskIdList, 0);
$insertData = $taskTester->setTaskFilesTest($taskIdList, 6);
r($emptyData) && p() && e('0'); // 测试空数据
r($emptyTaskID) && p() && e('0'); // 测试传入的任务ID
r(count($insertData)) && p() && e('10'); // 测试插入任务附件的数量
r($insertData) && p('1:objectID') && e('6'); // 测试插入附件数据的对象ID
r(count($taskFiles)) && p() && e('0'); // 测试获取任务ID为5的附件数据的数量
+68
View File
@@ -1606,6 +1606,7 @@ class taskTest
}
}
/**
* Test remove required fields for creating tasks based on conditions.
*
@@ -1628,4 +1629,71 @@ class taskTest
return $tester->config->task->create->requiredFields;
}
}
/**
* Test create a task.
*
* @param array $param
* @param int $executionID
* @access public
* @return object
*/
public function doCreateObject($param = array())
{
$assignedTo = array('');
$createFields = array('module' => 0, 'story' => 0, 'name' => '', 'type' => '', 'assignedTo' => 'admin',
'pri' => 3, 'estimate' => '', 'estStarted' => '2021-01-10', 'deadline' => '2021-03-19', 'desc' => '', 'version' => '1');
$task = new stdclass();
foreach($createFields as $field => $defaultValue) $task->$field = $defaultValue;
foreach($param as $key => $value) $task->$key = $value;
$objectID = $this->objectModel->doCreate($task);
unset($_POST);
if(dao::isError())
{
return dao::getError();
}
else
{
$object = $this->objectModel->getByID($objectID);
return $object;
}
}
/**
* Set attachments for tasks.
*
* @param array $taskFiles
* @param int $taskID
* @access public
* @return array
*/
public function setTaskFilesTest(array $taskIdList, int $taskID)
{
global $tester;
$taskFiles = array();
if($taskIdList)
{
$taskFiles = $tester->dao->select('*')->from(TABLE_FILE)->where('objectID')->in($taskIdList)->andWhere('objectType')->eq('task')->fetchAll('id');
foreach($taskFiles as $fileID => $taskFile) unset($taskFiles[$fileID]->id);
}
if(empty($taskFiles) and $taskID)
{
$files = $tester->dao->select('*')->from(TABLE_FILE)->where('objectID')->eq($taskID)->andWhere('objectType')->eq('task')->fetchAll('id');
foreach($files as $file)
{
$_FILES['files']['name'][] = $file->title;
$_FILES['files']['size'][] = $file->size;
$_FILES['files']['tmp_name'][] = $file->extension;
}
$_FILES['files']['error'] = 0;
}
return $this->objectModel->setTaskFiles($taskFiles, $taskID);
}
}