* Add test case for createtaskoftest method.

This commit is contained in:
tianshujie
2023-05-18 16:04:26 +08:00
parent 3b5d2e567d
commit 41784ae125
9 changed files with 171 additions and 50 deletions
+10 -10
View File
@@ -131,8 +131,8 @@ class taskModel extends model
$taskSpec->task = $taskID;
$taskSpec->version = $task->version;
$taskSpec->name = $task->name;
$taskSpec->estStarted = $task->estStarted ? $task->estStarted : null;
$taskSpec->deadline = $task->deadline ? $task->deadline : null;
if(!empty($task->estStarted)) $taskSpec->estStarted = $task->estStarted;
if(!empty($task->deadline)) $taskSpec->deadline = $task->deadline;
$this->dao->insert(TABLE_TASKSPEC)->data($taskSpec)->autoCheck()->exec();
if(dao::isError()) return false;
@@ -362,17 +362,17 @@ class taskModel extends model
$latestDeadline = '';
foreach($tasks as $task)
{
if(!helper::isZeroDate($task->estStarted) && (empty($earliestEstStarted) || $earliestEstStarted > $task->estStarted)) $earliestEstStarted = $task->estStarted;
if(!helper::isZeroDate($task->realStarted) && (empty($earliestRealStarted) || $earliestRealStarted > $task->realStarted)) $earliestRealStarted = $task->realStarted;
if(!helper::isZeroDate($task->deadline) && (empty($latestDeadline) || $latestDeadline < $task->deadline)) $latestDeadline = $task->deadline;
if(!helper::isZeroDate($task->estStarted) && (empty($earliestEstStarted) || $earliestEstStarted > $task->estStarted)) $earliestEstStarted = $task->estStarted;
if(!helper::isZeroDate($task->realStarted) && (empty($earliestRealStarted) || $earliestRealStarted > $task->realStarted)) $earliestRealStarted = $task->realStarted;
if(!helper::isZeroDate($task->deadline) && (empty($latestDeadline) || $latestDeadline < $task->deadline)) $latestDeadline = $task->deadline;
}
/* Initialize task data and update it. */
$newTask = new stdclass();
$newTask->estStarted = $earliestEstStarted;
$newTask->realStarted = $earliestRealStarted;
$newTask->deadline = $latestDeadline;
$this->dao->update(TABLE_TASK)->data($newTask)->autoCheck()->where('id')->eq($taskID)->exec();
$newTask = array();
if(!empty($earliestEstStarted)) $newTask['estStarted'] = $earliestEstStarted;
if(!empty($earliestRealStarted)) $newTask['realStarted'] = $earliestRealStarted;
if(!empty($latestDeadline)) $newTask['deadline'] = $latestDeadline;
if(!empty($newTask)) $this->dao->update(TABLE_TASK)->data($newTask)->autoCheck()->where('id')->eq($taskID)->exec();
return !dao::isError();
}
+1 -26
View File
@@ -9,31 +9,6 @@ title=taskModel->activate();
timeout=0
cid=1
- wait状态任务激活
- 第0条的field属性 @status
- 第0条的old属性 @wait
- 第0条的new属性 @doing
- done状态任务激活
- 第0条的field属性 @status
- 第0条的old属性 @done
- 第0条的new属性 @doing
- pause状态任务激活
- 第0条的field属性 @status
- 第0条的old属性 @pause
- 第0条的new属性 @doing
- cancel状态任务激活
- 第0条的field属性 @status
- 第0条的old属性 @cancel
- 第0条的new属性 @doing
- closed状态任务激活
- 第0条的field属性 @status
- 第0条的old属性 @closed
- 第0条的new属性 @doing
*/
zdTable('task')->gen(10);
@@ -47,4 +22,4 @@ r($task->activateTest($taskIDList[0])) && p('0:field,old,new') && e('status,wait
r($task->activateTest($taskIDList[1])) && p('0:field,old,new') && e('status,done,doing'); //done状态任务激活
r($task->activateTest($taskIDList[2])) && p('0:field,old,new') && e('status,pause,doing'); //pause状态任务激活
r($task->activateTest($taskIDList[3])) && p('0:field,old,new') && e('status,cancel,doing'); //cancel状态任务激活
r($task->activateTest($taskIDList[4])) && p('0:field,old,new') && e('status,closed,doing'); //closed状态任务激活
r($task->activateTest($taskIDList[4])) && p('0:field,old,new') && e('status,closed,doing'); //closed状态任务激活
+1 -1
View File
@@ -7,8 +7,8 @@ su('admin');
/**
title=taskModel->addTaskEffort();
timeout=0
cid=1
pid=1
插入task为1 left为0 consumed为3的任务 >> 601,1,0,3
插入task为601 left为0 consumed为3的任务 >> 602,601,0,3
@@ -0,0 +1,60 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/task.class.php';
su('admin');
zdTable('task')->gen(0);
zdTable('taskspec')->gen(0);
zdTable('project')->config('project')->gen(5);
zdTable('story')->config('story')->gen(5);
/**
title=taskModel->createTaskOfTest();
timeout=0
cid=1
*/
$sprintTask = array('execution' => 3, 'name' => '迭代下的任务');
$stageTask = array('execution' => 4, 'name' => '阶段下的任务');
$kanbanTask = array('execution' => 5, 'name' => '看板下的任务');
$notEstimateTask = array('execution' => 3, 'name' => '迭代下的任务', 'estimate' => 0);
$notStoryTask = array('execution' => 3, 'name' => '迭代下的任务', 'story' => 0);
$notEstStartedTask = array('execution' => 3, 'name' => '迭代下的任务', 'estStarted' => '');
$notDeadlineTask = array('execution' => 3, 'name' => '迭代下的任务', 'deadline' => '');
$notModuleTask = array('execution' => 3, 'name' => '迭代下的任务', 'module' => 0);
$testTasks[2] = new stdclass();
$testTasks[2]->name = '测试子任务1';
$testTasks[2]->type = 'test';
$testTasks[2]->estimate = 0;
$testTasks[2]->left = 0;
$testTasks[2]->mailto = '';
$testTasks[3] = new stdclass();
$testTasks[3]->name = '测试子任务2';
$testTasks[3]->type = 'test';
$testTasks[3]->estimate = 0;
$testTasks[3]->left = 0;
$testTasks[3]->mailto = '';
$taskTester = new taskTest();
r($taskTester->createTaskOfTestObject()) && p('name:0') && e('『任务名称』不能为空。'); // 测试空数据
r($taskTester->createTaskOfTestObject($sprintTask)) && p('execution,name') && e('3,迭代下的任务'); // 测试创建迭代下的测试任务
r($taskTester->createTaskOfTestObject($stageTask)) && p('execution,name') && e('4,阶段下的任务'); // 测试创建阶段下的测试任务
r($taskTester->createTaskOfTestObject($kanbanTask)) && p('execution,name') && e('5,看板下的任务'); // 测试创建看板下的测试任务
r($taskTester->createTaskOfTestObject($sprintTask, $testTasks)) && p('children[5]:parent') && e('4'); // 测试创建迭代下的测试任务以及子任务
r($taskTester->createTaskOfTestObject($stageTask, $testTasks)) && p('children[8]:parent') && e('7'); // 测试创建阶段下的测试任务以及子任务
r($taskTester->createTaskOfTestObject($kanbanTask, $testTasks)) && p('children[11]:parent') && e('10'); // 测试创建看板下的测试任务以及子任务
r($taskTester->createTaskOfTestObject($notEstimateTask, array(), 'estimate')) && p('estimate:0') && e('『最初预计』不能为空。'); // 测试创建迭代下的测试任务的预计必填项
r($taskTester->createTaskOfTestObject($notStoryTask, array(), 'story')) && p('story:0') && e('『相关研发需求』不能为空。'); // 测试创建迭代下的测试任务的需求必填项
r($taskTester->createTaskOfTestObject($notEstStartedTask, array(), 'estStarted')) && p('estStarted:0') && e('『预计开始』不能为空。'); // 测试创建迭代下的测试任务的预计开始必填项
r($taskTester->createTaskOfTestObject($notDeadlineTask, array(), 'deadline')) && p('deadline:0') && e('『截止日期』不能为空。'); // 测试创建迭代下的测试任务的截止日期必填项
r($taskTester->createTaskOfTestObject($notModuleTask, array(), 'module')) && p('module:0') && e('『所属模块』不能为空。'); // 测试创建迭代下的测试任务的模块必填项
r($taskTester->createTaskOfTestObject($notEstimateTask, $testTasks, 'estimate')) && p('children[14]:parent') && e('13'); // 测试创建迭代下的测试任务的预计必填项
r($taskTester->createTaskOfTestObject($notStoryTask, $testTasks, 'story')) && p('children[17]:parent') && e('16'); // 测试创建迭代下的测试任务的需求必填项
r($taskTester->createTaskOfTestObject($notEstStartedTask, $testTasks, 'estStarted')) && p('children[20]:parent') && e('19'); // 测试创建迭代下的测试任务的预计开始必填项
r($taskTester->createTaskOfTestObject($notDeadlineTask, $testTasks, 'deadline')) && p('children[23]:parent') && e('22'); // 测试创建迭代下的测试任务的截止日期必填项
r($taskTester->createTaskOfTestObject($notModuleTask, $testTasks, 'module')) && p('children[26]:parent') && e('25'); // 测试创建迭代下的测试任务的模块必填项
+16 -10
View File
@@ -18,6 +18,8 @@ $story->title->range('1-5')->prefix('需求');
$story->type->range('story');
$story->gen(5);
zdTable('action')->gen(0);
/**
title=测试taskModel->createTestChildTasks();
@@ -27,17 +29,21 @@ cid=1
*/
$testTasks[2] = new stdclass();
$testTasks[2]->name = '测试子任务1';
$testTasks[2]->type = 'test';
$testTasks[2]->mailto = '';
$testTasks[2]->name = '测试子任务1';
$testTasks[2]->type = 'test';
$testTasks[2]->estimate = 0;
$testTasks[2]->left = 0;
$testTasks[2]->mailto = '';
$testTasks[3] = new stdclass();
$testTasks[3]->name = '测试子任务2';
$testTasks[3]->type = 'test';
$testTasks[3]->mailto = '';
$testTasks[3]->name = '测试子任务2';
$testTasks[3]->type = 'test';
$testTasks[3]->estimate = 0;
$testTasks[3]->left = 0;
$testTasks[3]->mailto = '';
$taskTester = new taskTest();
r($taskTester->createTestChildTasksTest()) && p() && e('0'); // 测试空数据
r($taskTester->createTestChildTasksTest(0, $testTasks)) && p('name') && e('测试研发需求 #3 需求3'); // 测试任务ID为空的情况
r($taskTester->createTestChildTasksTest(1, array())) && p() && e('0'); // 测试子测试任务的数据为空的情况
r($taskTester->createTestChildTasksTest(1, $testTasks)) && p('name') && e('测试研发需求 #3 需求3'); // 测试创建任务ID为1的子测试任务
r($taskTester->createTestChildTasksTest()) && p() && e('0'); // 测试空数据
r($taskTester->createTestChildTasksTest(0, $testTasks)) && p('type') && e('test'); // 测试任务ID为空的情况
r($taskTester->createTestChildTasksTest(1, array())) && p('id') && e('2'); // 测试子测试任务的数据为空的情况
r($taskTester->createTestChildTasksTest(1, $testTasks)) && p('name') && e('测试研发需求 #2 需求2'); // 测试创建任务ID为1的子测试任务
@@ -0,0 +1,19 @@
title: table zt_project
author: Hu Fangzhou
version: "1.0"
fields:
- field: id
range: 1-5
- field: name
note: "名称"
fields:
- field: name1
range: rnd
- field: name2
range: 项目,迭代,阶段,看板{2}
- field: project
range: 1
- field: type
range: project,sprint,stage,kanban{2}
- field: vision
range: rnd{4},lite
@@ -0,0 +1,15 @@
title: table zt_story
author: Shujie Tian
version: "1.0"
fields:
- field: id
range: 1-5
- field: title
range: 1-5
profix: '需求'
- field: product
range: 1
- field: type
range: story
- field: vision
range: rnd
+47 -1
View File
@@ -1665,6 +1665,53 @@ class taskTest
return $tester->config->task->create->requiredFields;
}
/**
* 创建测试类型的任务。
* Create a test type task.
*
* @param array $param
* @param array $testTasks
* @param string $requiredFields
* @access public
* @return object|array
*/
public function createTaskOfTestObject(array $param = array(), array $testTasks = array(), string $requiredField = ''): object|array
{
global $tester;
$_SERVER['HTTP_HOST'] = $tester->config->db->host;
$createFields = array(
'execution' => 3,
'module' => 0,
'story' => 0,
'name' => '',
'type' => 'test',
'assignedTo' => 'admin',
'assignedDate' => helper::now(),
'pri' => 3,
'estimate' => 0,
'left' => 0,
'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;
if($requiredField)
{
if(!empty($testTasks) and $requiredField == 'estStarted') unset($task->estStarted);
if(!empty($testTasks) and $requiredField == 'deadline') unset($task->deadline);
$tester->config->task->create->requiredFields = $tester->config->task->create->requiredFields . ',' . $requiredField . ',';
}
$objectID = $this->objectModel->createTaskOfTest($task, $testTasks);
if(dao::isError()) return dao::getError();
return $this->objectModel->getByID($objectID);
}
/**
* 测试创建一个任务。
* Test create a task.
@@ -1691,7 +1738,6 @@ class taskTest
$task = new stdclass();
foreach($createFields as $field => $defaultValue) $task->$field = $defaultValue;
foreach($param as $key => $value) $task->$key = $value;
$objectID = $this->objectModel->doCreate($task);
+2 -2
View File
@@ -1095,8 +1095,8 @@ class taskZen extends task
->stripTags($this->config->task->editor->create['id'], $this->config->allowedTags)
->get();
if(empty($postData->estStarted)) $task->estStarted = null;
if(empty($postData->deadline)) $task->deadline = null;
if(empty($postData->estStarted)) unset($task->estStarted);
if(empty($postData->deadline)) unset($task->deadline);
/* Processing image link. */
$task = $this->loadModel('file')->processImgURL($task, $this->config->task->editor->create['id'], $postData->uid);