Merge branch 'master' of https://git.zcorp.cc/easycorp/zentaopms
This commit is contained in:
@@ -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")));
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Executable
+45
@@ -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('『最初预计』应当是数字,可以是小数。'); // 测试不输入类型创建任务
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . "/test/lib/init.php";
|
||||
include dirname(__FILE__, 2) . '/task.class.php';
|
||||
|
||||
zdTable('project')->config('project_removecreaterequiredfields')->gen(9);
|
||||
|
||||
$tasks = array();
|
||||
for($i = 0; $i < 18; $i ++)
|
||||
{
|
||||
$tasks[$i] = new stdclass();
|
||||
$tasks[$i]->execution = ($i + 1) % 9;
|
||||
if(empty($tasks[$i]->execution)) $tasks[$i]->execution = 9;
|
||||
if($i < 9) $tasks[$i]->type = 'dev';
|
||||
if($i >= 9) $tasks[$i]->type = 'test';
|
||||
}
|
||||
global $tester;
|
||||
|
||||
/**
|
||||
|
||||
title=taskModel->removeCreateRequiredFields();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
*/
|
||||
|
||||
|
||||
$selectTestStoryList = array(false, true);
|
||||
|
||||
$task = new taskTest();
|
||||
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[0], $selectTestStoryList[0])) && p() && e('name,type,execution,story,estimate,estStarted,deadline,module'); // 测试任务执行为短期执行 阶段类型为mix 任务类型为dev 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[0], $selectTestStoryList[1])) && p() && e('name,type,execution,story,estimate,estStarted,deadline,module'); // 测试任务执行为短期执行 阶段类型为mix 任务类型为dev 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[1], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为短期执行 阶段类型为request 任务类型为dev 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[1], $selectTestStoryList[1])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为短期执行 阶段类型为request 任务类型为dev 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[2], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为短期执行 阶段类型为review 任务类型为dev 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[2], $selectTestStoryList[1])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为短期执行 阶段类型为review 任务类型为dev 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[3], $selectTestStoryList[0])) && p() && e('name,type,execution,story,estimate,estStarted,deadline,module'); // 测试任务执行为长期执行 阶段类型为mix 任务类型为dev 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[3], $selectTestStoryList[1])) && p() && e('name,type,execution,story,estimate,estStarted,deadline,module'); // 测试任务执行为长期执行 阶段类型为mix 任务类型为dev 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[4], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为长期执行 阶段类型为request 任务类型为dev 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[4], $selectTestStoryList[1])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为长期执行 阶段类型为request 任务类型为dev 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[5], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为长期执行 阶段类型为review 任务类型为dev 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[5], $selectTestStoryList[1])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为长期执行 阶段类型为review 任务类型为dev 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[6], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为运维执行 阶段类型为mix 任务类型为dev 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[6], $selectTestStoryList[1])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为运维执行 阶段类型为mix 任务类型为dev 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[7], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为运维执行 阶段类型为request 任务类型为dev 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[7], $selectTestStoryList[1])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为运维执行 阶段类型为request 任务类型为dev 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[8], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为运维执行 阶段类型为review 任务类型为dev 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[8], $selectTestStoryList[1])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为运维执行 阶段类型为review 任务类型为dev 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[9], $selectTestStoryList[0])) && p() && e('name,type,execution,story,estimate,estStarted,deadline,module'); // 测试任务执行为短期执行 阶段类型为mix 任务类型为test 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[9], $selectTestStoryList[1])) && p() && e('name,type,execution'); // 测试任务执行为短期执行 阶段类型为mix 任务类型为test 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[10], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为短期执行 阶段类型为request 任务类型为test 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[10], $selectTestStoryList[1])) && p() && e('name,type,execution'); // 测试任务执行为短期执行 阶段类型为request 任务类型为test 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[11], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为短期执行 阶段类型为review 任务类型为test 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[11], $selectTestStoryList[1])) && p() && e('name,type,execution'); // 测试任务执行为短期执行 阶段类型为review 任务类型为test 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[12], $selectTestStoryList[0])) && p() && e('name,type,execution,story,estimate,estStarted,deadline,module'); // 测试任务执行为长期执行 阶段类型为mix 任务类型为test 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[12], $selectTestStoryList[1])) && p() && e('name,type,execution'); // 测试任务执行为长期执行 阶段类型为mix 任务类型为test 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[13], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为长期执行 阶段类型为request 任务类型为test 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[13], $selectTestStoryList[1])) && p() && e('name,type,execution'); // 测试任务执行为长期执行 阶段类型为request 任务类型为test 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[14], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为长期执行 阶段类型为review 任务类型为test 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[14], $selectTestStoryList[1])) && p() && e('name,type,execution'); // 测试任务执行为长期执行 阶段类型为review 任务类型为test 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[15], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为运维执行 阶段类型为mix 任务类型为test 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[15], $selectTestStoryList[1])) && p() && e('name,type,execution'); // 测试任务执行为运维执行 阶段类型为mix 任务类型为test 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[16], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为运维执行 阶段类型为request 任务类型为test 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[16], $selectTestStoryList[1])) && p() && e('name,type,execution'); // 测试任务执行为运维执行 阶段类型为request 任务类型为test 有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[17], $selectTestStoryList[0])) && p() && e('name,type,execution,estimate,estStarted,deadline,module'); // 测试任务执行为运维执行 阶段类型为review 任务类型为test 没有选择需求时候的必填项
|
||||
r($task->removeCreateRequiredFieldsTest($tasks[17], $selectTestStoryList[1])) && p() && e('name,type,execution'); // 测试任务执行为运维执行 阶段类型为review 任务类型为test 有选择需求时候的必填项
|
||||
Executable
+38
@@ -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的附件数据的数量
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
---
|
||||
title: zt_project
|
||||
author: auto_removecreaterequiredfields
|
||||
version: "1.0"
|
||||
fields:
|
||||
- field: id
|
||||
range: 1-9
|
||||
- field: lifetime
|
||||
range: short{3},long{3},ops{3}
|
||||
- field: attribute
|
||||
range: mix,request,review
|
||||
...
|
||||
|
||||
@@ -1605,4 +1605,95 @@ class taskTest
|
||||
return $task;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Test remove required fields for creating tasks based on conditions.
|
||||
*
|
||||
* @param object $task
|
||||
* @param bool $selectTestStory
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function removeCreateRequiredFieldsTest(object $task, bool $selectTestStory): string
|
||||
{
|
||||
global $tester;
|
||||
$tester->config->task->create->requiredFields = 'name,type,execution,story,estimate,estStarted,deadline,module';
|
||||
$this->objectModel->removeCreateRequiredFields($task, $selectTestStory);
|
||||
if(dao::isError())
|
||||
{
|
||||
return dao::getError();
|
||||
}
|
||||
else
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . "/test/lib/init.php";
|
||||
include dirname(__FILE__, 2) . '/todo.class.php';
|
||||
su('admin');
|
||||
|
||||
/**
|
||||
|
||||
title=测试 todoModel->getByExportList();
|
||||
cid=1
|
||||
pid=1
|
||||
|
||||
*/
|
||||
|
||||
zdTable('todo')->config('getbyexportlist')->gen(5);
|
||||
|
||||
$todo = new todoTest();
|
||||
|
||||
$formData = new stdClass();
|
||||
$formData->rawdata = new stdClass();
|
||||
$formData->rawdata->exportType = '';
|
||||
$testWhere = " `deleted` = '0' AND `vision` = 'rnd' AND `assignedTo` = 'admin' AND `date` >= '20230301' AND `date` <= '20230301' AND `status` IN ('wait') ";
|
||||
$testWhere2 = " `deleted` = '0' and `status` IN ('closed') ";
|
||||
|
||||
$testResult = $todo->getByExportListTest("date_desc", $formData, $testWhere, '1');
|
||||
$testResult2 = $todo->getByExportListTest("date_desc", $formData, $testWhere2, '1');
|
||||
|
||||
r(count($testResult)) && p() && e('1');
|
||||
r($testResult[1]) && p('name,status') && e('待办1,wait');
|
||||
|
||||
r(count($testResult2)) && p() && e('2');
|
||||
r($testResult2[4]) && p('name,status') && e('待办4,closed');
|
||||
r($testResult2[5]) && p('name,status') && e('待办5,closed');
|
||||
Executable
+40
@@ -0,0 +1,40 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/todo.class.php';
|
||||
|
||||
su('admin');
|
||||
|
||||
function initData()
|
||||
{
|
||||
zdTable('todo')->config('todo')->gen(10);
|
||||
zdTable('bug')->gen(10);
|
||||
zdTable('task')->gen(10);
|
||||
zdTable('story')->gen(10);
|
||||
zdTable('testtask')->gen(10);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
title=测试 todoModel->create();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
- 执行todoTest模块的getPriByTodoTypeTest方法,参数是$type, $objectID @1
|
||||
|
||||
- 执行todoTest模块的getPriByTodoTypeTest方法,参数是$inValidType, $inValidObjectID @1
|
||||
|
||||
*/
|
||||
|
||||
initData();
|
||||
|
||||
$validTypeList = array('bug','task','story','testtask');
|
||||
$validObjectIdList = array_combine(range(1,10), range(1,10));
|
||||
$type = $validTypeList[array_rand($validTypeList, 1)];
|
||||
$objectID = $validObjectIdList[array_rand($validObjectIdList, 1)];
|
||||
$inValidType = 'invalidType';
|
||||
$inValidObjectID = 0;
|
||||
|
||||
$todoTest = new todoTest();
|
||||
r($todoTest->getPriByTodoTypeTest($type, $objectID)) && p() && e('1');
|
||||
r($todoTest->getPriByTodoTypeTest($inValidType, $inValidObjectID)) && p() && e('1');
|
||||
@@ -0,0 +1,39 @@
|
||||
title: zt_getbyexportlist
|
||||
author: jukui
|
||||
version: "1.0"
|
||||
fields:
|
||||
- field: id
|
||||
range: 1-9
|
||||
- field: account
|
||||
range: 'admin'
|
||||
- field: date
|
||||
range: 1-9
|
||||
prefix: '2023-03-0'
|
||||
- field: begin
|
||||
range: 1000-1100
|
||||
- field: end
|
||||
range: 1200-1300
|
||||
- field: type
|
||||
range: 'custom'
|
||||
- field: cycle
|
||||
range: 0
|
||||
- field: pri
|
||||
range: 3
|
||||
- field: name
|
||||
range: 1-9
|
||||
prefix: '待办'
|
||||
- field: desc
|
||||
range: 1-9
|
||||
prefix: '这是待办描述'
|
||||
- field: status
|
||||
range: 'wait,doing,done,closed,closed'
|
||||
- field: finishedDate
|
||||
range: 1-9
|
||||
prefix: '2023-05-2'
|
||||
- field: closedDate
|
||||
range: 1-9
|
||||
prefix: '2023-05-2'
|
||||
- field: assignedTo
|
||||
range: 'admin'
|
||||
- field: assignedBy
|
||||
range: ''
|
||||
@@ -0,0 +1,35 @@
|
||||
title: Get pri for todoModel::getPriByTodoType UTC.
|
||||
desc: Get pri for todoModel::getPriByTodoType UTC.
|
||||
author: xushenjie
|
||||
version: 1.0.0
|
||||
|
||||
fields:
|
||||
- field: account
|
||||
range: 'admin'
|
||||
- field: name
|
||||
range: 1-10
|
||||
prefix: '待办'
|
||||
- field: date
|
||||
range: 1-9
|
||||
prefix: '2023-05-0'
|
||||
- field: type
|
||||
range: 'custom'
|
||||
- field: begin
|
||||
range: 1000-1100
|
||||
- field: end
|
||||
range: 1200-1300
|
||||
- field: assignedTo
|
||||
range: 'admin'
|
||||
- field: desc
|
||||
range: 1-100
|
||||
prefix: '待办描述'
|
||||
- field: status
|
||||
range: 'wait,doing,doing,doing,wait'
|
||||
- field: objectID
|
||||
range: 0
|
||||
- field: assignedBy
|
||||
range: 'admin'
|
||||
- field: type
|
||||
range: 'custom,bug,task,story,testtask'
|
||||
- field: objectID
|
||||
range: 1-10
|
||||
@@ -364,19 +364,37 @@ class todoTest
|
||||
return $result ? '1' : '0';
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取导出的待办数据。
|
||||
* Get data for export todo.
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param object $formData
|
||||
* @param string $queryCondition
|
||||
* @param string $checkedItem
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getByExportListTest(string $orderBy, object $formData, string $queryCondition , string $checkedItem): array
|
||||
{
|
||||
return $this->objectModel->getByExportList($orderBy, $formData, $queryCondition, $checkedItem);
|
||||
}
|
||||
/**
|
||||
* 获取导出的待办数据。
|
||||
* Get data for export todo.
|
||||
*
|
||||
* @param string $orderBy
|
||||
* @param object $formData
|
||||
* @param string $queryCondition
|
||||
* @param string $checkedItem
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function getByExportListTest(string $orderBy, object $formData, string $queryCondition , string $checkedItem): array
|
||||
{
|
||||
return $this->objectModel->getByExportList($orderBy, $formData, $queryCondition, $checkedItem);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据待办类型,对象ID获取优先级。
|
||||
* Get pri by todo type and object id.
|
||||
*
|
||||
* @param string $todoType
|
||||
* @param int $objectID
|
||||
* @access public
|
||||
* @return string
|
||||
*/
|
||||
public function getPriByTodoTypeTest(string $todoType, int $objectID): int
|
||||
{
|
||||
$pri = $this->objectModel->getPriByTodoType($todoType, $objectID);
|
||||
|
||||
if(dao::isError()) return 0;
|
||||
|
||||
return $pri ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user