* Add test case for createtaskoftest method.
This commit is contained in:
+10
-10
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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状态任务激活
|
||||
|
||||
@@ -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'); // 测试创建迭代下的测试任务的模块必填项
|
||||
@@ -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
|
||||
@@ -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
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user