Merge branch 'release/21.7.5' into feature/workflowgroup

This commit is contained in:
sunguangming
2025-09-01 05:41:47 +00:00
622 changed files with 20057 additions and 2716 deletions
@@ -0,0 +1,64 @@
<?php
include dirname(__FILE__, 5) . '/test/lib/ui.php';
class createStakeholderTester extends tester
{
/**
* Create a stakeholder.
* 创建干系人表单。
*
* @param array $stakeholder
* @access public
* @return object
*/
public function createStakeholder(array $stakeholder)
{
$form = $this->initForm('program', 'createstakeholder', array('programID' => 1), 'appIframe-program');
/* 根据传的值来判断是否点击公司同事/外部人员单选按钮 */
if(isset($stakeholder['type']))
{
$from = 'type' . $stakeholder['type'];
$form->dom->$from->click();
$form->wait(1);
}
/* 根据传的值来判断是否点击“是”单选按钮 */
if(isset($stakeholder['key']))
{
$key = $stakeholder['key'];
$form->dom->$key->click();
$form->wait(1);
}
if(isset($stakeholder['user'])) $form->dom->user->setvalue($stakeholder['user']);
$form->wait(1);
$form->dom->btn($this->lang->save)->click();
$form->wait(1);
return $this->checkResult($stakeholder);
}
/**
* Check the result after create the stakeholder.
* 创建干系人后检查结果。
*
* @param array $stakeholder
* @access public
* @return object
*/
public function checkResult(array $stakeholder)
{
if($this->response('method') != 'stakeholder')
{
if($this->checkFormTips('stakeholder')) return $this->success('创建干系人表单页提示信息正确');
return $this->failed('创建干系人表单页提示信息不正确');
}
/* 干系人列表,检查干系人字段信息。*/
$stakeholderPage = $this->loadPage('program', 'stakeholder');
$stakeholderPage->wait(2);
if(isset($stakeholder['type']))
{
$this->lang->stakeholder->fromList = (array)$this->lang->stakeholder->fromList;
if($stakeholderPage->dom->type->getText() != $this->lang->stakeholder->fromList[$stakeholder['type']]) return $this->failed('干系人类型错误');
}
if($stakeholderPage->dom->title->getText() != $stakeholder['user']) return $this->failed('干系人姓名错误');
return $this->success('创建干系人成功');
}
}
@@ -8,6 +8,12 @@ title=测试 programModel::accessDenied();
timeout=0
cid=1
- 权限不足跳转 @fail
- 权限不足跳转 @fail
- 权限不足跳转 @fail
- 权限不足跳转 @fail
- 权限不足跳转 @fail
*/
global $tester;
@@ -27,3 +33,7 @@ catch (Throwable $e)
}
r($result) && p() && e('fail'); // 权限不足跳转
r($result) && p() && e('fail'); // 权限不足跳转
r($result) && p() && e('fail'); // 权限不足跳转
r($result) && p() && e('fail'); // 权限不足跳转
r($result) && p() && e('fail'); // 权限不足跳转
+20 -12
View File
@@ -1,5 +1,20 @@
#!/usr/bin/env php
<?php
/**
title=测试 programModel::checkAccess();
timeout=0
cid=1
- 不传入ID @1
- 传入存在ID的值 @2
- 传入存在ID的值 @6
- 不传入ID,读取session信息 @6
- 传入正确的ID @1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
$program = zenData('project');
@@ -13,20 +28,13 @@ $program->end->range('20220212 000000:0')->type('timestamp')->format('YYYY-MM-DD
$program->gen(2);
su('admin');
/**
title=测试 programModel::checkAccess();
timeout=0
cid=1
*/
global $tester;
$tester->loadModel('program');
$programs = array(1 => 1, 2 => 2, 6 => 6);
$idList = array(0, 6, 110);
r($tester->program->checkAccess($idList[0], $programs)) && p() && e('1'); //不传入ID
r($tester->program->checkAccess($idList[1], $programs)) && p() && e('6'); //传入存在ID的值
r($tester->program->checkAccess($idList[0], $programs)) && p() && e('6'); //不传入ID,读取session信息
r($tester->program->checkAccess($idList[2], $programs)) && p() && e('1'); //传入正确的ID
r($tester->program->checkAccess(0, $programs)) && p() && e('1'); //不传入ID
r($tester->program->checkAccess(2, $programs)) && p() && e('2'); //传入存在ID的值
r($tester->program->checkAccess(6, $programs)) && p() && e('6'); //传入存在ID的值
r($tester->program->checkAccess(0, $programs)) && p() && e('6'); //不传入ID,读取session信息
r($tester->program->checkAccess(110, $programs)) && p() && e('1'); //传入正确的ID
@@ -1,20 +1,37 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
/**
title=测试 programModel::createDefaultProgram();
timeout=0
cid=1
pid=1
创建默认项目集 >> 1
- 查询项目集数量 @1
- 查询默认项目集数据
- 属性id @1
- 属性type @program
- 查询默认项目集数据
- 属性budgetUnit @CNY
- 属性name @默认项目集
- 查询默认项目集数据属性hasProduct @1
- 查询默认项目集数据
- 属性status @doing
- 属性acl @open
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
zenData('project')->gen(0);
$programTester = new programTest();
$programTester->createDefaultProgramTest();
$result = $programTester->createDefaultProgramTest();
r($result) && p('') && e('1'); // 创建默认项目集
global $tester;
$programs = $tester->loadModel('program')->dao->select('*')->from(TABLE_PROGRAM)->fetchAll();
r(count($programs)) && p() && e('1'); // 查询项目集数量
r($programs[0]) && p('id,type') && e('1,program'); // 查询默认项目集数据
r($programs[0]) && p('budgetUnit,name') && e('CNY,默认项目集'); // 查询默认项目集数据
r($programs[0]) && p('hasProduct') && e('1'); // 查询默认项目集数据
r($programs[0]) && p('status,acl') && e('doing,open'); // 查询默认项目集数据
+23 -23
View File
@@ -1,33 +1,33 @@
#!/usr/bin/env php
<?php
/**
title=测试 programModel::getBudgetLeft();
timeout=0
cid=1
- 查看项目集1的所有父项目集的预算剩余 @1000
- 查看项目集2的所有父项目集的预算剩余 @2000
- 查看项目集3的所有父项目集的预算剩余 @3000
- 查看项目集4的所有父项目集的预算剩余 @4000
- 查看项目集5的所有父项目集的预算剩余 @5000
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
su('admin');
$program = zenData('project');
$program->id->range('1,2');
$program->name->range('父项目集1,父项目集2');
$program->id->range('1,2,3,4,5');
$program->type->range('program');
$program->budget->range('900000,899900');
$program->path->range('1,2')->prefix(',')->postfix(',');
$program->begin->range('20220112 000000:0')->type('timestamp')->format('YYYY-MM-DD');
$program->end->range('20220212 000000:0')->type('timestamp')->format('YYYY-MM-DD');
$program->gen(2);
/**
title=测试 programModel::getBudgetLeft();
cid=1
pid=1
查看项目集1的所有父项目集的预算剩余 >> 900000
查看项目集2的所有父项目集的预算剩余 >> 899900
*/
$program->budget->range('1000,2000,3000,4000,5000');
$program->gen(5);
$programTester = new programTest();
$result1 = $programTester->getBudgetLeftTest(1);
$result2 = $programTester->getBudgetLeftTest(2);
r($result1) && p() && e('900000'); // 查看项目集1的所有父项目集的预算剩余
r($result2) && p() && e('899900'); // 查看项目集2的所有父项目集的预算剩余
r($programTester->getBudgetLeftTest(1)) && p() && e('1000'); // 查看项目集1的所有父项目集的预算剩余
r($programTester->getBudgetLeftTest(2)) && p() && e('2000'); // 查看项目集2的所有父项目集的预算剩余
r($programTester->getBudgetLeftTest(3)) && p() && e('3000'); // 查看项目集3的所有父项目集的预算剩余
r($programTester->getBudgetLeftTest(4)) && p() && e('4000'); // 查看项目集4的所有父项目集的预算剩余
r($programTester->getBudgetLeftTest(5)) && p() && e('5000'); // 查看项目集5的所有父项目集的预算剩余
+35 -19
View File
@@ -1,5 +1,35 @@
#!/usr/bin/env php
<?php
/**
title=测试 programModel::getById();
timeout=0
cid=1
- 通过id字段获取id=1的项目集。
- 属性id @1
- 属性name @项目集1
- 属性budget @900000
- 属性type @program
- 属性status @wait
- 通过id字段获取id=2的项目集。
- 属性id @2
- 属性name @项目集2
- 属性budget @899900
- 属性type @program
- 属性status @wait
- 通过id字段获取id=3的项目集。
- 属性id @3
- 属性name @项目集3
- 属性budget @899800
- 属性type @program
- 属性status @doing
- 通过id字段获取id=1000的项目集,返回空 @0
- 通过id字段获取id=0的项目集,返回空 @0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
su('admin');
@@ -13,24 +43,10 @@ $program->name->setFields(array(
));
$program->gen(5);
/**
title=测试 programModel::getById();
cid=1
pid=1
通过id字段获取id=1的项目集并验证它的name。 >> 项目集1
通过id字段获取id=1000的项目集,返回空 >> 0
通过id字段获取id=0的项目集,返回空 >> 0
*/
$programTester = new programTest();
$program1 = $programTester->getByIDTest(1);
$program2 = $programTester->getByIDTest(1000);
$program3 = $programTester->getByIDTest(0);
r($program1) && p('name') && e('项目集1'); // 通过id字段获取id=1的项目集并验证它的name。
r($program2) && p() && e('0'); // 通过id字段获取id=1000的项目集,返回空
r($program3) && p() && e('0'); // 通过id字段获取id=0的项目集,返回空
r($programTester->getByIDTest(1)) && p('id,name,budget,type,status') && e('1,项目集1,900000,program,wait'); // 通过id字段获取id=1的项目集。
r($programTester->getByIDTest(2)) && p('id,name,budget,type,status') && e('2,项目集2,899900,program,wait'); // 通过id字段获取id=2的项目集。
r($programTester->getByIDTest(3)) && p('id,name,budget,type,status') && e('3,项目集3,899800,program,doing'); // 通过id字段获取id=3的项目集。
r($programTester->getByIDTest(1000)) && p() && e('0'); // 通过id字段获取id=1000的项目集,返回空
r($programTester->getByIDTest(0)) && p() && e('0'); // 通过id字段获取id=0的项目集,返回空
+19 -14
View File
@@ -1,5 +1,20 @@
#!/usr/bin/env php
<?php
/**
title=测试 programModel::getParentPM();
timeout=0
cid=1
- 获取父项目集的负责人数量 @4
- 获取父项目集的负责人account第6条的admin属性 @admin
- 获取父项目集的负责人account第7条的test1属性 @test1
- 获取父项目集的负责人account第8条的admin属性 @admin
- 获取父项目集的负责人account第9条的test1属性 @test1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
su('admin');
@@ -20,23 +35,13 @@ $program->end->range('20220212 000000:0')->type('timestamp')->format('YYYY-MM-DD
$program->deleted->range('0{15},1{5}');
$program->gen(10);
/**
title=测试 programModel::getParentPM();
cid=1
pid=1
获取父项目集的负责人数量 >> 2
获取父项目集的负责人account >> admin
获取父项目集的负责人account >> test1
*/
$programTester = new programTest();
$programIdList = array(5, 6, 7);
$programIdList = array(5, 6, 7, 8, 9);
$parentPM = $programTester->getParentPMTest($programIdList);
r(count($parentPM)) && p() && e('2'); // 获取父项目集的负责人数量
r(count($parentPM)) && p() && e('4'); // 获取父项目集的负责人数量
r($parentPM) && p('6:admin') && e('admin'); // 获取父项目集的负责人account
r($parentPM) && p('7:test1') && e('test1'); // 获取父项目集的负责人account
r($parentPM) && p('8:admin') && e('admin'); // 获取父项目集的负责人account
r($parentPM) && p('9:test1') && e('test1'); // 获取父项目集的负责人account
+16 -7
View File
@@ -1,5 +1,20 @@
#!/usr/bin/env php
<?php
/**
title=测试 programModel::getStakeholders();
timeout=0
cid=1
- 获取干系人数量 @2
- 获取干系人数量 @1
- id倒序排,获取第一个干系人真实姓名第0条的realname属性 @用户2
- id倒序排,获取第二个干系人真实姓名第1条的realname属性 @admin
- id正序排,获取第一个干系人真实姓名第0条的realname属性 @用户1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
@@ -23,13 +38,6 @@ $stakeholder->user->range('admin,user1,user2');
$stakeholder->gen(3);
su('admin');
/**
title=测试 programModel::getStakeholders();
timeout=0
cid=1
*/
global $tester;
$tester->loadModel('program');
@@ -39,4 +47,5 @@ $stakeholders2 = $tester->program->getStakeholders(2, 'id_asc');
r(count($stakeholders1)) && p() && e('2'); // 获取干系人数量
r(count($stakeholders2)) && p() && e('1'); // 获取干系人数量
r($stakeholders1) && p('0:realname') && e('用户2'); // id倒序排,获取第一个干系人真实姓名
r($stakeholders1) && p('1:realname') && e('admin'); // id倒序排,获取第二个干系人真实姓名
r($stakeholders2) && p('0:realname') && e('用户1'); // id正序排,获取第一个干系人真实姓名
@@ -1,8 +1,27 @@
#!/usr/bin/env php
<?php
/**
title=测试 programModel::getTeamMemberPairs();
timeout=0
cid=1
- 获取项目集1下所有团队成员数量 @4
- 获取项目集2下所有团队成员数量 @1
- 获取项目集1下所有团队成员真实姓名属性admin @A:admin
- 获取项目集1下所有团队成员真实姓名属性user1 @U:用户1
- 获取项目集1下所有团队成员真实姓名属性user3 @U:用户3
- 获取项目集1下所有团队成员真实姓名属性user4 @U:用户4
- 获取项目集2下所有团队成员真实姓名属性user2 @U:用户2
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
su('admin');
$program = zenData('project');
$program->id->range('1-5');
$program->name->range('项目集1,项目集2,项目1,项目2,项目3');
@@ -28,21 +47,6 @@ $team->gen(5);
zenData('user')->gen(5);
su('admin');
/**
title=测试 programModel::getTeamMemberPairs();
cid=1
pid=1
获取项目集1下所有团队成员数量 >> 5
获取项目集2下所有团队成员数量 >> 2
获取项目集1下所有团队成员真实姓名 >> A:admin
获取项目集2下所有团队成员真实姓名 >> U:用户2
*/
$programTester = new programTest();
$teams1 = $programTester->getTeamMemberPairsTest(1);
$teams2 = $programTester->getTeamMemberPairsTest(2);
@@ -50,4 +54,7 @@ $teams2 = $programTester->getTeamMemberPairsTest(2);
r(count($teams1)) && p() && e('4'); // 获取项目集1下所有团队成员数量
r(count($teams2)) && p() && e('1'); // 获取项目集2下所有团队成员数量
r($teams1) && p('admin') && e('A:admin'); // 获取项目集1下所有团队成员真实姓名
r($teams1) && p('user1') && e('U:用户1'); // 获取项目集1下所有团队成员真实姓名
r($teams1) && p('user3') && e('U:用户3'); // 获取项目集1下所有团队成员真实姓名
r($teams1) && p('user4') && e('U:用户4'); // 获取项目集1下所有团队成员真实姓名
r($teams2) && p('user2') && e('U:用户2'); // 获取项目集2下所有团队成员真实姓名
+14 -6
View File
@@ -1,9 +1,17 @@
#!/usr/bin/env php
<?php
/**
title=测试 programModel::getTopByPath();
cid=0
timeout=0
cid=1
- 传入一个path,返回最顶级path @2
- 传入一个path,返回最顶级path @1
- 传入一个path,返回最顶级path @3
- 传入一个path,返回最顶级path @5
- 传入一个path,返回最顶级path @100
*/
@@ -15,8 +23,8 @@ su('admin');
global $tester;
$tester->loadModel('program');
$path1 = ',2,3,4,';
$path2 = '100,101';
r($tester->program->getTopByPath($path1)) && p() && e('2'); // 传入一个path,返回最顶级path
r($tester->program->getTopByPath($path2)) && p() && e('100'); // 传入一个path,返回最顶级path
r($tester->program->getTopByPath(',2,3,4,')) && p() && e('2'); // 传入一个path,返回最顶级path
r($tester->program->getTopByPath(',1,100,101,')) && p() && e('1'); // 传入一个path,返回最顶级path
r($tester->program->getTopByPath(',3,100,200,')) && p() && e('3'); // 传入一个path,返回最顶级path
r($tester->program->getTopByPath(',5,6,7,')) && p() && e('5'); // 传入一个path,返回最顶级path
r($tester->program->getTopByPath('100,101')) && p() && e('100'); // 传入一个path,返回最顶级path
@@ -1,10 +1,5 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
zenData('user')->gen(5);
zenData('project')->loadYaml('program')->gen(20)->fixpath();
su('admin');
/**
@@ -12,11 +7,27 @@ title=测试 programModel::hasUnfinished();
timeout=0
cid=1
- 获取项目集1下未完成的项目和项目集数量 @1
- 获取项目集2下未完成的项目和项目集数量 @1
- 获取项目集3下未完成的项目和项目集数量 @0
- 获取项目集5下未完成的项目和项目集数量 @0
- 获取项目集9下未完成的项目和项目集数量 @0
- 获取项目集11下未完成的项目和项目集数量 @0
- 获取项目集60下未完成的项目和项目集数量 @0
*/
$programIdList = array(1, 2, 3);
$programTester = new programTest();
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
zenData('user')->gen(5);
zenData('project')->loadYaml('program')->gen(20)->fixpath();
su('admin');
r($programTester->hasUnfinishedChildrenTest($programIdList[0])) && p() && e('1'); // 获取项目集1下未完成的项目和项目集数量
r($programTester->hasUnfinishedChildrenTest($programIdList[1])) && p() && e('1'); // 获取项目集2下未完成的项目和项目集数量
r($programTester->hasUnfinishedChildrenTest($programIdList[2])) && p() && e('0'); // 获取项目集3下未完成的项目和项目集数量
$programTester = new programTest();
r($programTester->hasUnfinishedChildrenTest(1)) && p() && e('1'); // 获取项目集1下未完成的项目和项目集数量
r($programTester->hasUnfinishedChildrenTest(2)) && p() && e('1'); // 获取项目集2下未完成的项目和项目集数量
r($programTester->hasUnfinishedChildrenTest(3)) && p() && e('0'); // 获取项目集3下未完成的项目和项目集数量
r($programTester->hasUnfinishedChildrenTest(5)) && p() && e('0'); // 获取项目集5下未完成的项目和项目集数量
r($programTester->hasUnfinishedChildrenTest(9)) && p() && e('0'); // 获取项目集9下未完成的项目和项目集数量
r($programTester->hasUnfinishedChildrenTest(11)) && p() && e('0'); // 获取项目集11下未完成的项目和项目集数量
r($programTester->hasUnfinishedChildrenTest(60)) && p() && e('0'); // 获取项目集60下未完成的项目和项目集数量
+19 -13
View File
@@ -1,5 +1,20 @@
#!/usr/bin/env php
<?php
/**
title=测试 programModel::update();
timeout=0
cid=1
- 正常更新项目集的情况属性name @测试更新项目集
- 正常更新项目集的情况属性status @doing
- 更新项目集名称为空时第message[name]条的0属性 @『项目集名称』不能为空。
- 当计划开始为空时更新项目集信息第message[begin]条的0属性 @『计划开始』不能为空。
- 当计划完成为空时更新项目集信息第message[end]条的0属性 @『计划完成』不能为空。
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
su('admin');
@@ -14,19 +29,6 @@ $program->end->range('20220212 000000:0')->type('timestamp')->format('YYYY-MM-DD
$program->status->range('wait');
$program->gen(1);
/**
title=测试 programModel::update();
cid=1
pid=1
正常更新项目集的情况 >> 测试更新项目集
更新项目集名称为空时 >> 『项目集名称』不能为空。
当计划开始为空时更新项目集信息 >> 『计划开始』不能为空。
当计划完成为空时更新项目集信息 >> 『计划完成』不能为空。
*/
$programTester = new programTest();
$data = array(
@@ -46,6 +48,9 @@ $data = array(
$normalProgram = $data;
$doingProgram = $data;
$doingProgram['status'] = 'doing';
$emptyTitleProgram = $data;
$emptyTitleProgram['name'] = '';
@@ -56,6 +61,7 @@ $emptyEndProgram = $data;
$emptyEndProgram['end'] = '';
r($programTester->updateTest(1, $normalProgram)) && p('name') && e('测试更新项目集'); // 正常更新项目集的情况
r($programTester->updateTest(1, $doingProgram)) && p('status') && e('doing'); // 正常更新项目集的情况
r($programTester->updateTest(1, $emptyTitleProgram)) && p('message[name]:0') && e('『项目集名称』不能为空。'); // 更新项目集名称为空时
r($programTester->updateTest(1, $emptyBeginProgram)) && p('message[begin]:0') && e('『计划开始』不能为空。'); // 当计划开始为空时更新项目集信息
r($programTester->updateTest(1, $emptyEndProgram)) && p('message[end]:0') && e('『计划完成』不能为空。'); // 当计划完成为空时更新项目集信息
+17 -11
View File
@@ -1,10 +1,5 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
su('admin');
zenData('project')->gen(10);
/**
@@ -12,13 +7,24 @@ title=测试 programModel::updateOrder();
timeout=0
cid=1
- 设置排序是1属性order @1
- 设置排序是5属性order @5
- 设置排序是10属性order @10
- 设置空的项目集属性order @0
- 设置不存在的项目集属性order @0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
su('admin');
zenData('project')->gen(10);
$programTester = new programTest();
r($programTester->updateOrderTest(10, 1)) && p('order') && e('1'); // 设置排序是1
r($programTester->updateOrderTest(10, 5)) && p('order') && e('5'); // 设置排序是5
r($programTester->updateOrderTest(0, 1)) && p('order') && e('0'); // 设置空的项目集
r($programTester->updateOrderTest(11, 1)) && p('order') && e('0'); // 设置不存在的项目集
r($programTester->updateOrderTest(10, 1)) && p('order') && e('1'); // 设置排序是1
r($programTester->updateOrderTest(10, 5)) && p('order') && e('5'); // 设置排序是5
r($programTester->updateOrderTest(10, 10)) && p('order') && e('10'); // 设置排序是10
r($programTester->updateOrderTest(0, 1)) && p('order') && e('0'); // 设置空的项目集
r($programTester->updateOrderTest(11, 1)) && p('order') && e('0'); // 设置不存在的项目集
@@ -1,11 +1,5 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
zenData('user')->gen(5);
zenData('project')->loadYaml('program')->gen(40);
su('admin');
/**
@@ -13,11 +7,24 @@ title=测试 programTao::buildProjectActionsMap();
timeout=0
cid=1
- 测试生成项目集id为1的操作按钮数据。第0条的name属性 @team
- 测试生成项目集id为1的操作按钮数据。第0条的name属性 @team
- 测试生成项目集id为2的操作按钮数据。第0条的name属性 @team
- 测试生成敏捷项目的操作按钮数据。第0条的name属性 @team
- 测试生成敏捷项目的操作按钮数据。第0条的name属性 @team
*/
$projectIdList = array(11, 60, 100);
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
zenData('user')->gen(5);
zenData('project')->loadYaml('program')->gen(40);
su('admin');
$programTester = new programTest();
r($programTester->buildProjectActionsMapTest($projectIdList[0])) && p('0:name') && e('team'); // 测试生成项目集id为1的操作按钮数据。
r($programTester->buildProjectActionsMapTest($projectIdList[1])) && p('0:name') && e('team'); // 测试生成项目集id为2的操作按钮数据。
r($programTester->buildProjectActionsMapTest($projectIdList[2])) && p('0:name') && e('team'); // 测试生成敏捷项目的操作按钮数据。
r($programTester->buildProjectActionsMapTest(11)) && p('0:name') && e('team'); // 测试生成项目集id为1的操作按钮数据。
r($programTester->buildProjectActionsMapTest(61)) && p('0:name') && e('team'); // 测试生成项目集id为1的操作按钮数据。
r($programTester->buildProjectActionsMapTest(60)) && p('0:name') && e('team'); // 测试生成项目集id为2的操作按钮数据。
r($programTester->buildProjectActionsMapTest(100)) && p('0:name') && e('team'); // 测试生成敏捷项目的操作按钮数据。
r($programTester->buildProjectActionsMapTest(101)) && p('0:name') && e('team'); // 测试生成敏捷项目的操作按钮数据。
+20 -17
View File
@@ -1,5 +1,20 @@
#!/usr/bin/env php
<?php
/**
title=测试 programModel::fixLinkedProduct();
timeout=0
cid=1
- 测试空数据 @0
- 测试含有影子产品的项目修改。 @4
- 测试含有影子产品的项目修改。 @4
- 测试OldParent参数等于0的项目修改。 @2
- 测试OldParent参数等于0的项目修改。 @2
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
su('admin');
@@ -14,21 +29,9 @@ $projectproduct->product->range('2');
$projectproduct->project->range('11');
$projectproduct->gen(1);
/**
title=测试 programModel::fixLinkedProduct();
timeout=0
cid=1
*/
$programIdList = array(0, 1, 3);
$parentIdList = array(0, 0, 4);
$oldParent = array(0, 11, 0);
$oldPathList = array(',0,', ',11,1', ',14,2');
$programTester = new programTest();
r($programTester->fixLinkedProductTest($programIdList[0], $parentIdList[0], $oldParent[0], $oldPathList[0])) && p() && e('0'); // 测试空数据
r($programTester->fixLinkedProductTest($programIdList[2], $parentIdList[2], $oldParent[2], $oldPathList[2])) && p() && e('4'); // 测试含有影子产品的项目修改。
r($programTester->fixLinkedProductTest($programIdList[1], $parentIdList[1], $oldParent[1], $oldPathList[1])) && p() && e('2'); // 测试OldParent参数等于0的项目修改。
r($programTester->fixLinkedProductTest(0, 0, 0, ',0,')) && p() && e('0'); // 测试空数据
r($programTester->fixLinkedProductTest(3, 1, 0, ',14,2')) && p() && e('4'); // 测试含有影子产品的项目修改。
r($programTester->fixLinkedProductTest(3, 4, 0, ',14,2')) && p() && e('4'); // 测试含有影子产品的项目修改。
r($programTester->fixLinkedProductTest(1, 0, 11, ',11,1')) && p() && e('2'); // 测试OldParent参数等于0的项目修改。
r($programTester->fixLinkedProductTest(1, 0, 12, ',12,1')) && p() && e('2'); // 测试OldParent参数等于0的项目修改。
+18 -7
View File
@@ -1,19 +1,30 @@
#!/usr/bin/env php
<?php
/**
*
title=测试programTao::getNormalActions();
timeout=0
cid=1
- 项目集第0条的name属性 @edit
- 项目集第1条的name属性 @create
- 项目集第2条的name属性 @delete
- 项目集第0条的name属性 @edit
- 项目第0条的name属性 @edit
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
zenData('project')->gen(20);
su('admin');
/**
title=测试programTao::getNormalActions();
timeout=0
cid=1
*/
$tester = new programTest();
r($tester->getNormalActionsTest(1)) && p('0:name') && e('edit'); // 项目集
r($tester->getNormalActionsTest(1)) && p('1:name') && e('create'); // 项目集
r($tester->getNormalActionsTest(1)) && p('2:name') && e('delete'); // 项目集
r($tester->getNormalActionsTest(2)) && p('0:name') && e('edit'); // 项目集
r($tester->getNormalActionsTest(11)) && p('0:name') && e('edit'); // 项目
+42 -8
View File
@@ -1,19 +1,53 @@
#!/usr/bin/env php
<?php
/**
title=测试programTao::getRootProgramList();
timeout=0
cid=1
- 执行$programList @10
- 执行$programList
- 第0条的id属性 @1
- 第0条的name属性 @项目集1
- 第0条的PM属性 @pm1
- 第0条的type属性 @program
- 执行$programList
- 第1条的id属性 @2
- 第1条的name属性 @项目集2
- 第1条的PM属性 @pm2
- 第1条的type属性 @program
- 执行$programList
- 第2条的id属性 @3
- 第2条的name属性 @项目集3
- 第2条的PM属性 @pm3
- 第2条的type属性 @program
- 执行$programList
- 第5条的id属性 @6
- 第5条的name属性 @项目集6
- 第5条的PM属性 @pm6
- 第5条的type属性 @program
- 执行$programList
- 第9条的id属性 @10
- 第9条的name属性 @项目集10
- 第9条的PM属性 @pm10
- 第9条的type属性 @program
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
zenData('project')->loadYaml('program')->gen(40);
su('admin');
/**
title=测试programTao::getRootProgramList();
timteout=0
cid=1
*/
$tester = new programTest();
$programList = $tester->program->getRootProgramList();
r(count($programList)) && p('') && e('10');
r(count($programList)) && p() && e('10');
r($programList) && p('0:id,name,PM,type') && e('1,项目集1,pm1,program');
r($programList) && p('1:id,name,PM,type') && e('2,项目集2,pm2,program');
r($programList) && p('2:id,name,PM,type') && e('3,项目集3,pm3,program');
r($programList) && p('5:id,name,PM,type') && e('6,项目集6,pm6,program');
r($programList) && p('9:id,name,PM,type') && e('10,项目集10,pm10,program');
+86
View File
@@ -0,0 +1,86 @@
#!/usr/bin/env php
<?php
/**
title=项目集下创建干系人测试
timeout=0
cid=1
- 校验用户不能为空
- 测试结果 @创建干系人表单页提示信息正确
- 最终测试状态 @ SUCCESS
- 创建项目团队成员干系人
- 测试结果 @创建干系人成功
- 最终测试状态 @ SUCCESS
- 创建公司干系人
- 测试结果 @创建干系人成功
- 最终测试状态 @ SUCCESS
- 创建关键干系人
- 测试结果 @创建干系人成功
- 最终测试状态 @ SUCCESS
- 创建外部干系人
- 测试结果 @创建干系人成功
- 最终测试状态 @ SUCCESS
*/
chdir(__DIR__);
include '../lib/createstakeholder.ui.class.php';
global $config;
$stakeholder = zenData('stakeholder');
$stakeholder->gen(0);
$user = zenData('user');
$user->id->range('1-5');
$user->type->range('inside{4}, outside{1}');
$user->dept->range('1');
$user->account->range('admin, user1, user2, user3, user4');
$user->realname->range('admin, user1, user2, user3, user4');
$user->password->range($config->uitest->defaultPassword)->format('md5');
$user->visions->range('rnd');
$user->gen(5);
$project = zenData('project');
$project->id->range('1-2');
$project->project->range('0');
$project->type->range('program, project');
$project->model->range('[], scrum');
$project->parent->range('0, 1');
$project->path->range('`,1,`, `,1,2,`');
$project->grade->range('1, 2');
$project->name->range('项目集A, 敏捷项目1');
$project->hasProduct->range('1');
$project->status->range('wait');
$project->begin->range('(-96w)-(-95w):1D')->type('timestamp')->format('YY/MM/DD');
$project->end->range('(+96w)-(+97w):1D')->type('timestamp')->format('YY/MM/DD');
$project->acl->range('open');
$project->gen(2);
$team = zendata('team');
$team->id->range('1');
$team->root->range('1');
$team->type->range('project');
$team->account->range('admin, user1, user2');
$team->join->range('(-2M)-(-M):1D')->type('timestamp')->format('YY/MM/DD');
$team->gen(1);
$tester = new createstakeholderTester();
$tester->login();
$stakeholder = array(
array('user' => ''),
array('user' => 'user1'),
array('user' => 'user2', 'type' => 'company'),
array('user' => 'user3', 'key' => 'key'),
array('user' => 'user4', 'type' => 'outside'),
);
r($tester->createStakeholder($stakeholder['0'])) && p('message,status') && e('创建干系人表单页提示信息正确, SUCCESS'); //校验用户不能为空
r($tester->createStakeholder($stakeholder['1'])) && p('message,status') && e('创建干系人成功, SUCCESS'); //创建项目团队成员干系人
r($tester->createStakeholder($stakeholder['2'])) && p('message,status') && e('创建干系人成功, SUCCESS'); //创建公司干系人
r($tester->createStakeholder($stakeholder['3'])) && p('message,status') && e('创建干系人成功, SUCCESS'); //创建关键干系人
r($tester->createStakeholder($stakeholder['4'])) && p('message,status') && e('创建干系人成功, SUCCESS'); //创建外部干系人
$tester->closeBrowser();
@@ -0,0 +1,15 @@
<?php
class createstakeholderPage extends page
{
public function __construct($webdriver)
{
parent::__construct($webdriver);
$xpath = array(
'user' => "//*[@name='user']",
'typecompany' => "//*[@id='fromcompany']",
'typeoutside' => "//*[@id='fromoutside']",
'key' => "//*[@id='key1']",
);
$this->dom->xpath = array_merge($this->dom->xpath, $xpath);
}
}
@@ -9,6 +9,8 @@ class stakeholderPage extends page
'stakeholderNum' => "//*[@id='table-program-stakeholder']/div[3]/div[2]/strong",
'selectAllBtn' => "//*[@id='table-program-stakeholder']/div[1]/div[1]/div/div[1]/div/div/label",
'batchUnlinkBtn' => "//*[@id='table-program-stakeholder']/div[3]/nav[1]/button",
'title' => "//*[@id='table-program-stakeholder']/div[2]/div[1]/div/div[2]/div",
'type' => "//*[@id='table-program-stakeholder']/div[2]/div[2]/div/div[1]/div",
);
$this->dom->xpath = array_merge($this->dom->xpath, $xpath);
}