diff --git a/module/user/test/lib/ui/profile.ui.class.php b/module/user/test/lib/ui/profile.ui.class.php new file mode 100644 index 0000000000..212b5d5af6 --- /dev/null +++ b/module/user/test/lib/ui/profile.ui.class.php @@ -0,0 +1,77 @@ +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测试成功'); + } +} diff --git a/module/user/test/ui/page/profile.php b/module/user/test/ui/page/profile.php new file mode 100644 index 0000000000..1af78c3692 --- /dev/null +++ b/module/user/test/ui/page/profile.php @@ -0,0 +1,38 @@ +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); + } +} \ No newline at end of file diff --git a/module/user/test/ui/profile.php b/module/user/test/ui/profile.php new file mode 100755 index 0000000000..a42b7fb67c --- /dev/null +++ b/module/user/test/ui/profile.php @@ -0,0 +1,58 @@ +#!/usr/bin/env php +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(); \ No newline at end of file