From 1511d46e472ac697b58eef7e7748c9f48bb5e18d Mon Sep 17 00:00:00 2001 From: tianshujie Date: Thu, 18 May 2023 16:36:00 +0800 Subject: [PATCH] * Add test case for createtaskofaffair method. --- module/task/control.php | 2 +- module/task/model.php | 4 +- module/task/test/model/createtaskofaffair.php | 42 +++++++++++++++++++ .../yaml/createtaskofaffair/project.yaml | 19 +++++++++ module/task/test/task.class.php | 42 ++++++++++++++++++- module/task/zen.php | 14 +++---- 6 files changed, 112 insertions(+), 11 deletions(-) create mode 100644 module/task/test/model/createtaskofaffair.php create mode 100644 module/task/test/model/yaml/createtaskofaffair/project.yaml diff --git a/module/task/control.php b/module/task/control.php index f9baa2e952..44c0a61e19 100755 --- a/module/task/control.php +++ b/module/task/control.php @@ -67,7 +67,7 @@ class task extends control if(dao::isError()) return $this->send(array('result' => 'fail', 'message' => dao::getError())); /* Check whether a task with the same name is created within the specified time. */ - $duplicateTaskID = $this->checkDuplicateName($task); + $duplicateTaskID = $this->taskZen->checkDuplicateName($task); if($duplicateTaskID) return $this->send(array('result' => 'success', 'message' => sprintf($this->lang->duplicate, $this->lang->task->common), 'load' => $this->createLink('task', 'view', "taskID={$duplicateTaskID}"))); $this->dao->begin(); diff --git a/module/task/model.php b/module/task/model.php index 7c88de05cb..8e266319e7 100755 --- a/module/task/model.php +++ b/module/task/model.php @@ -58,7 +58,7 @@ class taskModel extends model foreach($assignedToList as $assignedTo) { /* If the type of task is affair and assignedTo is empty, skip it. */ - if(empty($assignedTo)) continue; + if(count($assignedToList) > 1 && empty($assignedTo)) continue; $task->assignedTo = $assignedTo; $taskID = $this->create($task); @@ -113,7 +113,7 @@ class taskModel extends model if($this->isNoStoryExecution($execution)) $requiredFields = str_replace(',story,', ',', $requiredFields); /* Insert task data. */ - if(empty($task->assignedTo)) $task->assignedDate = null; + if(empty($task->assignedTo)) unset($task->assignedDate); $this->dao->insert(TABLE_TASK)->data($task) ->checkIF($task->estimate != '', 'estimate', 'float') ->autoCheck() diff --git a/module/task/test/model/createtaskofaffair.php b/module/task/test/model/createtaskofaffair.php new file mode 100644 index 0000000000..b442810b2e --- /dev/null +++ b/module/task/test/model/createtaskofaffair.php @@ -0,0 +1,42 @@ +#!/usr/bin/env php +gen(0); +zdTable('taskspec')->gen(0); +zdTable('project')->config('project')->gen(5); + +/** + +title=taskModel->createTaskOfAffair(); +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); +$assignedToList = array('admin', 'user1', 'user2'); +$emptyAssignedTo = array(0 => ''); + +$taskTester = new taskTest(); +r($taskTester->createTaskOfAffairObject()) && p() && e('0'); // 测试空数据 +r($taskTester->createTaskOfAffairObject($sprintTask, $emptyAssignedTo)) && p('1:execution,name') && e('3,迭代下的任务'); // 测试创建迭代下的事务任务 +r($taskTester->createTaskOfAffairObject($stageTask, $emptyAssignedTo)) && p('2:execution,name') && e('4,阶段下的任务'); // 测试创建阶段下的事务任务 +r($taskTester->createTaskOfAffairObject($kanbanTask, $emptyAssignedTo)) && p('3:execution,name') && e('5,看板下的任务'); // 测试创建看板下的事务任务 +r($taskTester->createTaskOfAffairObject($sprintTask, $assignedToList)) && p('4:assignedTo') && e('admin'); // 测试创建迭代下的多个事务任务 +r($taskTester->createTaskOfAffairObject($stageTask, $assignedToList)) && p('8:assignedTo') && e('user1'); // 测试创建阶段下的多个事务任务 +r($taskTester->createTaskOfAffairObject($kanbanTask, $assignedToList)) && p('12:assignedTo') && e('user2'); // 测试创建看板下的多个事务任务 +r($taskTester->createTaskOfAffairObject($notEstimateTask, $emptyAssignedTo, 'estimate')) && p('estimate:0') && e('『最初预计』不能为空。'); // 测试创建迭代下的测试任务的预计必填项 +r($taskTester->createTaskOfAffairObject($notStoryTask, $emptyAssignedTo, 'story')) && p('story:0') && e('『相关研发需求』不能为空。'); // 测试创建迭代下的测试任务的需求必填项 +r($taskTester->createTaskOfAffairObject($notEstStartedTask, $emptyAssignedTo, 'estStarted')) && p('estStarted:0') && e('『预计开始』不能为空。'); // 测试创建迭代下的测试任务的预计开始必填项 +r($taskTester->createTaskOfAffairObject($notDeadlineTask, $emptyAssignedTo, 'deadline')) && p('deadline:0') && e('『截止日期』不能为空。'); // 测试创建迭代下的测试任务的截止日期必填项 +r($taskTester->createTaskOfAffairObject($notModuleTask, $emptyAssignedTo, 'module')) && p('module:0') && e('『所属模块』不能为空。'); // 测试创建迭代下的测试任务的模块必填项 diff --git a/module/task/test/model/yaml/createtaskofaffair/project.yaml b/module/task/test/model/yaml/createtaskofaffair/project.yaml new file mode 100644 index 0000000000..2a064b7281 --- /dev/null +++ b/module/task/test/model/yaml/createtaskofaffair/project.yaml @@ -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 diff --git a/module/task/test/task.class.php b/module/task/test/task.class.php index 75b4e51625..e7704881bc 100644 --- a/module/task/test/task.class.php +++ b/module/task/test/task.class.php @@ -1671,7 +1671,7 @@ class taskTest * * @param array $param * @param array $testTasks - * @param string $requiredFields + * @param string $requiredField * @access public * @return object|array */ @@ -1712,6 +1712,46 @@ class taskTest return $this->objectModel->getByID($objectID); } + /** + * 创建事务类型的任务。 + * Create a affair type task. + * + * @param array $param + * @param array $assignedToList + * @param string $requiredField + * @access public + * @return object|array + */ + public function createTaskOfAffairObject(array $param = array(), array $assignedToList = array(), string $requiredField = ''): object|array + { + global $tester; + $_SERVER['HTTP_HOST'] = $tester->config->db->host; + + $createFields = array( + 'execution' => 3, + 'module' => 0, + 'story' => 0, + 'name' => '', + 'type' => 'affair', + '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) $tester->config->task->create->requiredFields = $tester->config->task->create->requiredFields . ',' . $requiredField . ','; + $objectIdList = $this->objectModel->createTaskOfAffair($task, $assignedToList); + + if(dao::isError()) return dao::getError(); + return $this->objectModel->getByList($objectIdList); + } + /** * 测试创建一个任务。 * Test create a task. diff --git a/module/task/zen.php b/module/task/zen.php index ba1c7ad808..9ff2af8758 100644 --- a/module/task/zen.php +++ b/module/task/zen.php @@ -784,11 +784,11 @@ class taskZen extends task * * @param object $taskID * @param object $execution - * @param string $afterChoice continueAdding|toTaskList|toStoryList + * @param string $afterChoose continueAdding|toTaskList|toStoryList * @access protected * @return array */ - protected function responseAfterCreate(object $task, object $execution, string $afterChoice): array + protected function responseAfterCreate(object $task, object $execution, string $afterChoose): array { /* If there is a database error, return the error message. */ if(dao::isError()) return array('result' => 'fail', 'message' => dao::getError()); @@ -825,7 +825,7 @@ class taskZen extends task } /* Process the return information for selecting a jump after creation. */ - return $this->generalCreateResponse($task, $execution->id, $afterChoice); + return $this->generalCreateResponse($task, $execution->id, $afterChoose); } /** @@ -834,11 +834,11 @@ class taskZen extends task * * @param object $task * @param int $executionID - * @param string $afterChoice + * @param string $afterChoose continueAdding|toTaskList|toStoryList * @access protected * @return array */ - protected function generalCreateResponse(object $task, int $executionID, string $afterChoice): array + protected function generalCreateResponse(object $task, int $executionID, string $afterChoose): array { /* Set the universal return value. */ $response['result'] = 'success'; @@ -847,7 +847,7 @@ class taskZen extends task /* Set the response to continue adding task to story. */ $executionID = $task->execution; - if($afterChoice == 'continueAdding') + if($afterChoose == 'continueAdding') { $storyID = $task->story ? $task->story : 0; $moduleID = $task->module ? $task->module : 0; @@ -857,7 +857,7 @@ class taskZen extends task } /* Set the response to return task list. */ - if($afterChoice == 'toTaskList') + if($afterChoose == 'toTaskList') { helper::setcookie('moduleBrowseParam', '0'); $response['load'] = $this->createLink('execution', 'task', "executionID={$executionID}&status=unclosed¶m=0&orderBy=id_desc");