Merge branch 'release/21.7.5' into feature/workflowgroup
This commit is contained in:
@@ -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'); // 权限不足跳转
|
||||
|
||||
@@ -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'); // 查询默认项目集数据
|
||||
|
||||
@@ -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的所有父项目集的预算剩余
|
||||
|
||||
@@ -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的项目集,返回空
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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下所有团队成员真实姓名
|
||||
|
||||
@@ -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下未完成的项目和项目集数量
|
||||
|
||||
@@ -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('『计划完成』不能为空。'); // 当计划完成为空时更新项目集信息
|
||||
|
||||
@@ -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'); // 测试生成敏捷项目的操作按钮数据。
|
||||
|
||||
@@ -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的项目修改。
|
||||
|
||||
@@ -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'); // 项目
|
||||
|
||||
@@ -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');
|
||||
|
||||
Executable
+86
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user