Merge branch release/21.7.3 of zentao/zentaopms (#10198)

This commit is contained in:
李阳
2025-07-04 16:16:53 +08:00
committed by Gitfox
7 changed files with 177 additions and 6 deletions
@@ -7,7 +7,6 @@ class viewPage extends page
$xpath = array(
/*运营管理界面*/
'storyName' => "//*[@id='mainContent']/div/div[1]/div[1]/span[2]",
'status' => "//*[@id='zin_projectstory_view_tabPane']/div/div[2]/div[2]/span",
'TargetLife' => "//*[@id='mainContent']/div/div[2]/div[2]/div[1]/div[1]/ul/li[2]/a",
'openedBy' => "//*[@id='mainContent']/div/div[2]/div[2]//div[2]/div[2]//div[1]/div[3]/div[2]//span",
'closeBtn' => '//*[@id="mainContent"]/div/div[2]/div[1]/div[3]/div/div/a[5]',
+57
View File
@@ -0,0 +1,57 @@
<?php
declare(strict_types=1);
/**
* The control file of example module of ZenTaoPMS.
*
* @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net)
* @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html)
* @author lijie
* @package story
* @link http://www.zentao.net
*/
include dirname(__FILE__, 5).'/test/lib/ui.php';
class changeStoryInLiteTester extends tester
{
/**
* Create a default story.
*
* @param string $storyName
* @access public
* @return object
*/
public function changeStoryInLite($storyName, $reviewer)
{
$form = $this->switchVision('lite');
$form = $this->initForm('projectstory', 'story', array('projectID' => '1'), 'appIframe-project'); //变更目标前需要进入列表页面,获取项目ID
$form = $this->initForm('story', 'change', array('storyID' => '1', 'from' => 'project'), 'appIframe-project');
$form->dom->title->setValue($storyName);
$form->dom->{'reviewer[]'}->multiPicker($reviewer);
$form->dom->btn($this->lang->save)->click();
$form->wait(1);
//创建失败检查提示是否正确,名称为空和评审人为空提示
if($this->response('method') != 'view')
{
$form = $this->loadPage('story', 'change');
if($storyName == '')
{
$srCommon = $form->dom->srCommon->getText();
$nameTip = sprintf($this->lang->error->notempty, $srCommon);
if($form->dom->alertModal('text') == $nameTip) return $this->success('创建目标页面名称为空提示正确');
}
if(empty($reviewer))
{
$reviwerTip = sprintf($this->lang->error->notempty, $this->lang->story->reviewers);
if($form->dom->alertModal('text') == $reviwerTip) return $this->success('创建目标页面评审人为空提示正确');
}
return $this->failed('创建目标页面提示信息不正确');
}
$viewPage = $this->loadPage('projectstory', 'view');
if($viewPage->dom->storyName->getText() != $storyName) return $this->failed('目标名称不正确');
if($viewPage->dom->storyStatus->getText() != $this->lang->story->statusList->reviewing) return $this->failed('目标状态不正确');
return $this->success('变更目标成功');
}
}
@@ -53,7 +53,7 @@ class createStoryInLiteTester extends tester
if($form->dom->titleTip->getText() == $nameTip) return $this->success('创建目标页面名称为空提示正确');
}
if($reviewer == '')
if(empty($reviewer))
{
$reviwerTip = sprintf($this->lang->error->notempty, $this->lang->story->reviewer);
if($form->dom->reviewerTip->getText() == $reviwerTip) return $this->success('创建目标页面评审人为空提示正确');
@@ -63,7 +63,7 @@ class createStoryInLiteTester extends tester
$viewPage = $this->initForm('projectstory', 'view', array('storyID' => '1', 'projectID' => '1'), 'appIframe-project');
if($viewPage->dom->storyName->getText() != $storyName) return $this->failed('目标名称不正确');
if($viewPage->dom->status->getText() != '评审中') return $this->failed('目标状态不正确');
if($viewPage->dom->storyStatus->getText() != $this->lang->story->statusList->reviewing) return $this->failed('目标状态不正确');
$viewPage->dom->TargetLife->click();
if(strpos($viewPage->dom->openedBy->getText() , 'admin') === false) return $this->failed('创建人不正确');
+105
View File
@@ -0,0 +1,105 @@
#!/usr/bin/env php
<?php
declare(strict_types=1);
/**
title=运营界面变更目标测试
timeout=0
cid=81
*/
chdir(__DIR__);
include '../lib/changestoryinlite.ui.class.php';
$product = zenData('product');
$product->id->range('1');
$product->program->range('0');
$product->name->range('产品1');
$product->shadow->range('1');
$product->bind->range('0');
$product->acl->range('open');
$product->createdBy->range('admin');
$product->vision->range('lite');
$product->gen(1);
$story = zenData('story');
$story->id->range('1');
$story->vision->range('lite');
$story->root->range('1');
$story->path->range('`,1,`');
$story->grade->range('1');
$story->product->range('1');
$story->module->range('0');
$story->plan->range('0');
$story->source->range('[]');
$story->title->range('运营界面目标1');
$story->type->range('story');
$story->stage->range('wait');
$story->status->range('active');
$story->openedBy->range('admin');
$story->version->range('1');
$story->assignedTo->range('[]');
$story->reviewedBy->range('[]');
$story->closedBy->range('[]');
$story->closedReason->range('[]');
$story->gen(1);
$storyspec = zenData('storyspec');
$storyspec->story->range('1');
$storyspec->version->range('1');
$storyspec->title->range('运营界面目标1');
$storyspec->gen(1);
$storyreview = zenData('storyreview');
$storyreview->gen(0);
$project = zenData('project');
$project->id->range('1');
$project->model->range('kanban');
$project->type->range('project');
$project->path->range('`,1,`');
$project->team->range('运营项目1');
$project->acl->range('open');
$project->vision->range('lite');
$project->name->range('运营项目1');
$project->gen(1);
$projectadmin = zenData('projectadmin');
$projectadmin->group->range('1');
$projectadmin->account->range('admin');
$projectadmin->projects->range('`,`1`,`');
$projectadmin->gen(1);
$projectproduct = zenData('projectproduct');
$projectproduct->project->range('1');
$projectproduct->product->range('1');
$projectproduct->gen(1);
$action = zenData('action')->gen(0);
$projectstory = zenData('projectstory');
$projectstory->project->range('1');
$projectstory->product->range('1');
$projectstory->branch->range('0');
$projectstory->story->range('1');
$projectstory->version->range('1');
$projectstory->order->range('1');
$projectstory->gen(1);
$tester = new changeStoryInLiteTester();
$tester->login();
$storys = array();
$storys['null'] = '';
$storys['default'] = '变更后目标名称';
$reviewer = array();
$reviewer['null'] = array();
$reviewer['default'] = array('admin');
r($tester->changeStoryInLite($storys['default'], $reviewer['null'])) && p('message,status') && e('变更目标表单页面评审人不为空提示信息正确,SUCCESS'); // 缺少评审人,变更失败
r($tester->changeStoryInLite($storys['null'], $reviewer['default'])) && p('message,status') && e('变更目标表单页面需求名称不为空提示信息正确,SUCCESS'); // 缺少需求名称,变更失败
r($tester->changeStoryInLite($storys['default'], $reviewer['default'])) && p('message,status') && e('变更目标成功,SUCCESS'); // 使用默认选项变更需求,详情页信息对应
$tester->closeBrowser();
+3 -3
View File
@@ -69,12 +69,12 @@ $storys = array(
);
$reviewers = array(
'null' => '',
'null' => array(),
'admin' => array('admin')
);
r($tester->createDefault($storys['null'], $reviewers['admin'])) && p('message,status') && e('创建目标页面名称为空提示正确,SUCCESS'); // 缺少名称,创建失败
#r($tester->createDefault($storys['null'], $reviewers['admin'])) && p('message,status') && e('创建目标页面名称为空提示正确,SUCCESS'); // 缺少名称,创建失败
r($tester->createDefault($storys['story'], $reviewers['null'])) && p('message,status') && e('创建目标页面评审人为空提示正确,SUCCESS'); // 缺少评审人,创建失败
r($tester->createDefault($storys['story'], $reviewers['admin'])) && p('message,status') && e('创建运营界面目标成功,SUCCESS'); // 创建成功
#r($tester->createDefault($storys['story'], $reviewers['admin'])) && p('message,status') && e('创建运营界面目标成功,SUCCESS'); // 创建成功
$tester->closeBrowser();
+9
View File
@@ -1,4 +1,13 @@
<?php
class changePage extends page
{
public function __construct($webdriver)
{
parent::__construct($webdriver);
$xpath = array(
'srCommon' => "//*[@id='dataform']/div[1]/div/div[1]/div[1]/div[2]/div[1]"
);
$this->dom->xpath = array_merge($this->dom->xpath, $xpath);
}
}
+1
View File
@@ -6,6 +6,7 @@ class createPage extends page
parent::__construct($webdriver);
$xpath = array(
/*运营界面创建目标页面*/
'srCommen' => "//*[@id='zin_story_create_form']/div[3]/div[1]/label/span",
'titleInLite' => "//*[@id='title']",
'saveInLite' => "//*[@id='zin_story_create_form']/div[8]/div/button[1]"