Merge branch release/21.7.5 of zentao/zentaopms (#11083)

This commit is contained in:
李阳
2025-08-21 17:43:24 +08:00
committed by Gitfox
5 changed files with 181 additions and 3 deletions
+1 -1
View File
@@ -8,7 +8,7 @@ class cancelTaskTester extends tester
*
* @param string $id
* @param string $status
* @accuss public
* @access public
* @return object
*/
public function cancel($id, $status)
+1 -1
View File
@@ -8,7 +8,7 @@ class closeTaskTester extends tester
*
* @param string $id
* @param string $status
* @accuss public
* @access public
* @return object
*/
public function close($id, $status)
@@ -0,0 +1,65 @@
<?php
include dirname(__FILE__, 5) . '/test/lib/ui.php';
class finishTaskTester extends tester
{
/**
* 完成任务。
* Finish task.
*
* @param string $id
* @param string $consumed
* @param string $assignedTo
* @param string $status
* @access public
* @return object
*/
public function finish($id, $consumed, $assignedTo, $status)
{
$form = $this->initForm('task', 'view', array('taskID' => $id), 'appIframe-execution');
$form->dom->xpath['taskAssignedTo'] = "//*[@title='{$this->lang->task->assignedTo}']/../div[2]";
$form->dom->xpath['taskStatus'] = "//*[@title='{$this->lang->task->status}']/..//span";
$form->dom->xpath['taskConsumed'] = "//*[@title='{$this->lang->task->consumed}']/../div[2]";
$form->dom->xpath['taskLeft'] = "//*[@title='{$this->lang->task->left}']/../div[2]";
$form->dom->xpath['finishBtn'] = "//a[@title='{$this->lang->task->finish}']";
$taskConsumed = $form->dom->taskConsumed->getText();
if(!in_array($status, array('wait', 'doing', 'pause')))
{
if(is_object($form->dom->finishBtn)) return $this->failed('错误的显示了完成按钮');
return $this->success('没有显示完成按钮');
}
$form->dom->finishBtn->click();
$form->wait(1);
/* 输入完成任务表单内容 */
$form->dom->currentConsumed->setValue($consumed);
if(empty($assignedTo)) $form->dom->assignedToDelBtn->click();
if(!empty($assignedTo)) $form->dom->assignedTo->picker($assignedTo);
$form->dom->submitBtn->click();
$form->wait(1);
if($consumed == '0' || empty($consumed))
{
if($status == 'wait')
{
if(!is_object($form->dom->currentConsumedTip)) return $this->failed('任务本次消耗为0时没有提示');
if($form->dom->currentConsumedTip->getText() != $this->lang->task->error->consumedEmpty) return $this->failed('任务本次消耗为0时提示错误');
return $this->success('任务本次消耗为0时提示正确');
}
/* 当任务为进行中、已暂停状态 */
if(!is_object($form->dom->modalText)) return $this->failed('任务本次消耗为0时没有提示');
if($form->dom->modalText->getText() != $this->lang->task->error->consumedEmptyAB) return $this->failed('任务本次消耗为0时提示错误');
}
if(is_object($form->dom->confirmBtn)) $form->dom->confirmBtn->click();
$form->wait(3);
if($form->dom->taskStatus->getText() != $this->lang->task->statusList->done) return $this->failed('完成任务后状态错误');
if(intval($form->dom->taskConsumed->getText()) != $consumed + $taskConsumed) return $this->failed('完成任务后总计消耗错误');
/* 当完成任务弹窗指派给为空,完成任务后,任务指派给为完成者admin */
if(empty($assignedTo)) $assignedTo = 'admin';
if($form->dom->taskAssignedTo->getText() != $assignedTo) return $this->failed('完成任务后指派给错误');
return $this->success('完成任务成功');
}
}
+1 -1
View File
@@ -8,7 +8,7 @@ class pauseTaskTester extends tester
*
* @param string $id
* @param string $status
* @accuss public
* @access public
* @return object
*/
public function pause($id, $status)
+113
View File
@@ -0,0 +1,113 @@
#!/usr/bin/env php
<?php
/**
title=完成任务
timeout=0
cid=1
- 执行tester模块的finish方法,参数是'1', '0', '', 'wait'▫
- 最终测试状态 @SUCCESS
- 测试结果 @任务本次消耗为0时提示正确
- 执行tester模块的finish方法,参数是'2', '1', '', 'wait'▫
- 最终测试状态 @SUCCESS
- 测试结果 @完成任务成功
- 执行tester模块的finish方法,参数是'3', '0', 'USER1', 'doing'▫
- 最终测试状态 @SUCCESS
- 测试结果 @完成任务成功
- 执行tester模块的finish方法,参数是'4', '1', '', 'doing'▫
- 最终测试状态 @SUCCESS
- 测试结果 @完成任务成功
- 执行tester模块的finish方法,参数是'5', '', '', 'done'▫
- 最终测试状态 @SUCCESS
- 测试结果 @没有显示完成按钮
- 执行tester模块的finish方法,参数是'6', '0', '', 'pause'▫
- 最终测试状态 @SUCCESS
- 测试结果 @完成任务成功
- 执行tester模块的finish方法,参数是'7', '1', 'USER1', 'pause'▫
- 最终测试状态 @SUCCESS
- 测试结果 @完成任务成功
- 执行tester模块的finish方法,参数是'8', '', '', 'cancel'▫
- 最终测试状态 @SUCCESS
- 测试结果 @没有显示完成按钮
- 执行tester模块的finish方法,参数是'9', '', '', 'closed'▫
- 最终测试状态 @SUCCESS
- 测试结果 @没有显示完成按钮
*/
chdir(__DIR__);
include '../lib/finishtask.ui.class.php';
$user = zenData('user');
$user->id->range('1-3');
$user->account->range('admin, user1, user2');
$user->password->range($config->uitest->defaultPassword)->format('md5');
$user->realname->range('admin, USER1, USER2');
$user->gen(3);
$product = zenData('product');
$product->id->range('1');
$product->name->range('产品1');
$product->gen(1);
$project = zenData('project');
$project->id->range('1, 2');
$project->project->range('0, 1');
$project->model->range('scrum, []');
$project->type->range('project, sprint');
$project->auth->range('extend, []');
$project->parent->range('0, 1');
$project->path->range('`,1,`, `,1,2,`');
$project->name->range('项目1, 项目1执行1');
$project->gen(2);
$projectProduct = zenData('projectproduct');
$projectProduct->project->range('1, 2');
$projectProduct->product->range('1');
$projectProduct->branch->range('0');
$projectProduct->plan->range('0');
$projectProduct->gen(2);
$task = zenData('task');
$task->id->range('1-100');
$task->project->range('1');
$task->parent->range('0 ');
$task->path->range('`,1,`, `,2,`, `,3,`, `,4,`, `,5,`, `,6,`, `,7,`, `,8,`, `,9,`');
$task->execution->range('2');
$task->story->range('0');
$task->name->range('1-100');
$task->type->range('devel');
$task->consumed->range('0, 2{8}');
$task->left->range('1{4}, 0, 1{4}');
$task->deadline->range(' (-5D)-(-4D):1D, []{11}')->type('timestamp')->format('YY/MM/DD');
$task->status->range('wait{2}, doing{2}, done, pause{2}, cancel, closed');
$task->gen(9);
$taskSpec = zenData('taskspec');
$taskSpec->task->range('1-100');
$taskSpec->version->range('0');
$taskSpec->name->range('1-100');
$taskSpec->gen(9);
$team = zenData('team');
$team->id->range('1-100');
$team->root->range('1{2}, 2{2}');
$team->type->range('project{2}, execution{2}');
$team->account->range('admin, user1');
$team->gen('4');
$tester = new finishTaskTester();
$tester->login();
r($tester->finish('1', '0', '', 'wait')) &&p('status,message') &&e('SUCCESS,任务本次消耗为0时提示正确');
r($tester->finish('2', '1', '', 'wait')) &&p('status,message') &&e('SUCCESS,完成任务成功');
r($tester->finish('3', '0', 'USER1', 'doing')) &&p('status,message') &&e('SUCCESS,完成任务成功');
r($tester->finish('4', '1', '', 'doing')) &&p('status,message') &&e('SUCCESS,完成任务成功');
r($tester->finish('5', '', '', 'done')) &&p('status,message') &&e('SUCCESS,没有显示完成按钮');
r($tester->finish('6', '0', '', 'pause')) &&p('status,message') &&e('SUCCESS,完成任务成功');
r($tester->finish('7', '1', 'USER1', 'pause')) &&p('status,message') &&e('SUCCESS,完成任务成功');
r($tester->finish('8', '', '', 'cancel')) &&p('status,message') &&e('SUCCESS,没有显示完成按钮');
r($tester->finish('9', '', '', 'closed')) &&p('status,message') &&e('SUCCESS,没有显示完成按钮');
$tester->closeBrowser();