Merge branch release/21.7.7 of zentao/zentaopms (#12192)

This commit is contained in:
李阳
2025-11-06 07:51:18 +08:00
committed by Gitfox
3 changed files with 173 additions and 0 deletions
@@ -0,0 +1,77 @@
<?php
require_once dirname(__FILE__, 6) . '/test/lib/ui.php';
define('PROFILE_ITEMS', ['realname', 'gender', 'account', 'email', 'dept', 'role', 'join', 'group',
'mobile', 'weixin', 'phone', 'qq', 'zipcode', 'address',
'commiter', 'skype', 'visits', 'whatsapp', 'last', 'slack', 'ip', 'dingding']);
class profileTester extends tester
{
public $users;
public function __construct()
{
parent::__construct();
$this->login();
global $uiTester;
$records = $uiTester->dao->select('u.*, g.name as `group`, d.name as dept')
->from(TABLE_USER)->alias('u')
->leftJoin(TABLE_USERGROUP)->alias('ug')->on('u.account = ug.account')
->leftJoin(TABLE_GROUP)->alias('g')->on('ug.group = g.id')
->leftJoin(TABLE_DEPT)->alias('d')->on('u.dept = d.id')
->fetchAll();
$this->users = array();
foreach($records as $record)
{
$this->users[$record->account] = $record;
}
}
/**
* 校验user模块profile视图的基本信息展示
* Verify user profile basic info display
*
* @access public
* @return object 成功或失败对象
*/
public function verifyUserProfile()
{
if(empty($this->users) || empty($this->users['admin'])) return $this->failed('用户对象或ID不能为空');
$form = $this->initForm('user', 'profile', array('userID' => $this->users['admin']->id), 'appIframe-system');
$form->wait(2);
foreach($this->users as $account => $user)
{
if($account != 'admin')
{
$form->dom->userPicker->picker($user->realname);
$form->wait(2);
if($form->dom->userPicker->getText() != $user->realname) return $this->failed("档案页面切换用户{$user->realname}显示失败");
}
foreach(PROFILE_ITEMS as $item)
{
$itemName = isset($this->lang->user->{$item}) ? $this->lang->user->{$item} : $item;
switch($item)
{
case 'gender':
$expected = $this->lang->user->genderList->{$user->gender} ?? $user->gender;
break;
case 'role':
$expected = $this->lang->user->roleList->{$user->role} ?? '';
break;
case 'last':
$expected = date('Y-m-d H:i:s', $user->last);
break;
default:
$expected = $user->{$item};
break;
}
$displayed = $form->dom->{$item}->getText();
if($displayed != $expected) return $this->failed("档案页面'{$itemName}'显示失败,期望:{$expected},实际:{$displayed}");
}
}
return $this->success('开源版m=user&f=profile测试成功');
}
}
+38
View File
@@ -0,0 +1,38 @@
<?php
class profilePage extends page
{
public function __construct($webdriver)
{
parent::__construct($webdriver);
$this->xpath = array(
// 顶部用户选择器
'userPicker' => '//div[contains(@class, "picker-select-single")]',
//详情字段
'realname' => '//*[@id="mainContent"]/div/table[1]/tbody/tr[1]/td[1]',
'gender' => '//*[@id="mainContent"]/div/table[1]/tbody/tr[1]/td[2]',
'account' => '//*[@id="mainContent"]/div/table[1]/tbody/tr[2]/td[1]',
'email' => '//*[@id="mainContent"]/div/table[1]/tbody/tr[2]/td[2]/a',
'dept' => '//*[@id="mainContent"]/div/table[1]/tbody/tr[3]/td[1]',
'role' => '//*[@id="mainContent"]/div/table[1]/tbody/tr[3]/td[2]',
'join' => '//*[@id="mainContent"]/div/table[1]/tbody/tr[4]/td[1]',
'group' => '//*[@id="mainContent"]/div/table[1]/tbody/tr[4]/td[2]',
'mobile' => '//*[@id="mainContent"]/div/table[2]/tbody/tr[1]/td[1]',
'weixin' => '//*[@id="mainContent"]/div/table[2]/tbody/tr[1]/td[2]',
'phone' => '//*[@id="mainContent"]/div/table[2]/tbody/tr[2]/td[1]',
'qq' => '//*[@id="mainContent"]/div/table[2]/tbody/tr[2]/td[2]',
'zipcode' => '//*[@id="mainContent"]/div/table[2]/tbody/tr[3]/td[1]',
'address' => '//*[@id="mainContent"]/div/table[2]/tbody/tr[3]/td[2]',
'commiter' => '//*[@id="mainContent"]/div/table[3]/tbody/tr[1]/td[1]',
'skype' => '//*[@id="mainContent"]/div/table[3]/tbody/tr[1]/td[2]/a',
'visits' => '//*[@id="mainContent"]/div/table[3]/tbody/tr[2]/td[1]',
'whatsapp' => '//*[@id="mainContent"]/div/table[3]/tbody/tr[2]/td[2]',
'last' => '//*[@id="mainContent"]/div/table[3]/tbody/tr[3]/td[1]',
'slack' => '//*[@id="mainContent"]/div/table[3]/tbody/tr[3]/td[2]',
'ip' => '//*[@id="mainContent"]/div/table[3]/tbody/tr[4]/td[1]',
'dingding' => '//*[@id="mainContent"]/div/table[3]/tbody/tr[4]/td[2]'
);
$this->dom->xpath = array_merge($this->dom->xpath, $this->xpath);
}
}
+58
View File
@@ -0,0 +1,58 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 2) . '/lib/ui/profile.ui.class.php';
/**
title=开源版m=user&f=profile测试
timeout=0
cid=1
- 开源版m=user&f=profile测试
- 最终测试状态 @SUCCESS
- 测试结果 @开源版m=user&f=profile测试成功
*/
$group = zenData('group');
$group->id->range('1-3');
$group->name->range('ADMIN,DEV,QA');
$group->role->range('admin,dev,qa');
$group->gen(3);
$userGroup = zenData('usergroup');
$userGroup->account->range('admin,user1,user2');
$userGroup->group->range('1-3');
$userGroup->gen(3);
$dept = zenData('dept');
$dept->id->range('1-3');
$dept->name->range('总办,开发部,测试部');
$dept->gen(3);
$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('管理员,用户1,用户2');
$user->gender->range('f,m');
$user->email->range('admin,user1,user2')->postfix('@chandao.com');
$user->dept->range('1-3');
$user->role->range('admin,dev,qa');
$user->mobile->range('13988888888');
$user->weixin->range('admin,user1,user2')->postfix('@chandao.com');
$user->zipcode->range('610041');
$user->address->range('CD/SC/CHINA');
$user->commiter->range('admin,user1,user2')->postfix('@chandao.com');
$user->skype->range('admin,user1,user2')->postfix('@chandao.com');
$user->slack->range('admin,user1,user2')->postfix('@chandao.com');
$user->whatsapp->range('admin,user1,user2')->postfix('@chandao.com');
$user->dingding->range('admin,user1,user2')->postfix('@chandao.com');
$user->ip->range('10.0.0.1');
$user->gen(3);
$tester = new profileTester();
r($tester->verifyUserProfile()) && p('status,message') && e('SUCCESS,开源版m=user&f=profile测试成功'); //开源版m=user&f=profile测试
$tester->closeBrowser();