This commit is contained in:
王怡栋
2022-03-16 13:27:01 +08:00
78 changed files with 3904 additions and 376 deletions
+1 -1
View File
@@ -1 +1 @@
16.5
16.5.beta1
+1 -1
View File
@@ -16,7 +16,7 @@ if(!class_exists('config')){class config{}}
if(!function_exists('getWebRoot')){function getWebRoot(){}}
/* 基本设置。Basic settings. */
$config->version = '16.5'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
$config->version = '16.5.beta1'; // ZenTaoPHP的版本。 The version of ZenTaoPHP. Don't change it.
$config->liteVersion = '1.0'; // 迅捷版版本。 The version of Lite.
$config->charset = 'UTF-8'; // ZenTaoPHP的编码。 The encoding of ZenTaoPHP.
$config->cookieLife = time() + 2592000; // Cookie的生存时间。The cookie life time.
+3 -2
View File
@@ -11,7 +11,7 @@ ALTER TABLE `zt_doc` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `id`;
ALTER TABLE `zt_doclib` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `type`;
ALTER TABLE `zt_action` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `read`;
ALTER TABLE `zt_searchindex` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `id`;
ALTER TABLE `zt_config` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `id`;
ALTER TABLE `zt_config` ADD `vision` varchar(10) NOT NULL DEFAULT '' AFTER `id`;
ALTER TABLE `zt_config` DROP INDEX `unique`, ADD UNIQUE `unique` (`vision`,`owner`,`module`,`section`,`key`);
ALTER TABLE `zt_todo` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `deleted`;
ALTER TABLE `zt_block` ADD `vision` varchar(10) NOT NULL DEFAULT 'rnd' AFTER `account`;
@@ -59,4 +59,5 @@ ALTER TABLE `zt_projectstory` CHANGE `branch` `branch` mediumint unsigned NOT NU
INSERT INTO `zt_config` (`vision`,`owner`, `module`, `section`, `key`, `value`) VALUES ('lite','system', 'project', '', 'unitList', 'CNY,USD');
INSERT INTO `zt_config` (`vision`,`owner`, `module`, `section`, `key`, `value`) VALUES ('lite','system', 'project', '', 'defaultCurrency', 'CNY');
ALTER TABLE `zt_apistruct` CHANGE `desc` `desc` text COLLATE 'utf8_general_ci' NOT NULL DEFAULT '' AFTER `type`;
ALTER TABLE `zt_apistruct` CHANGE `desc` `desc` text COLLATE 'utf8_general_ci' NOT NULL DEFAULT '' AFTER `type`;
ALTER TABLE `zt_review` ADD `doc` mediumint NULL AFTER `template`;
+1 -1
View File
@@ -359,7 +359,7 @@ CREATE TABLE IF NOT EXISTS `zt_compile` (
-- DROP TABLE IF EXISTS `zt_config`;
CREATE TABLE IF NOT EXISTS `zt_config` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`vision` varchar(10) NOT NULL DEFAULT 'rnd',
`vision` varchar(10) NOT NULL DEFAULT '',
`owner` char(30) NOT NULL default '',
`module` varchar(30) NOT NULL,
`section` char(30) NOT NULL default '',
+1
View File
@@ -219,6 +219,7 @@ class groupModel extends model
->from(TABLE_USERGROUP)->alias('t1')
->leftJoin(TABLE_USER)->alias('t2')->on('t1.account = t2.account')
->where('`group`')->eq((int)$groupID)
->beginIF($this->config->vision)->andWhere("CONCAT(',', visions, ',')")->like("%,{$this->config->vision},%")->fi()
->andWhere('t2.deleted')->eq(0)
->orderBy('t2.account')
->fetchPairs();
+2 -2
View File
@@ -97,7 +97,7 @@ $lang->misc->feature->themeDesc = '<p>ZenTao 15.0+ a new "Youth Blue" theme
$lang->misc->feature->visionsDesc = "<p>The concept of interface has been added since 16.5. Users can deal with R & D affairs in <span style='color: #0c60e1'>[R&D]</span> and daily office affairs in <span style='color: #0c60e1'>[Lite]</span>.</p><p>You can view the current interface on the avatar, and click the name of the interface to view and switch other interfaces.</p>";
$lang->misc->feature->visionsImage = 'theme/default/images/main/visions.png';
$lang->misc->releaseDate['16.5'] = '2022-02-22';
$lang->misc->releaseDate['16.5.beta1'] = '2022-03-16';
$lang->misc->releaseDate['16.4'] = '2022-02-15';
$lang->misc->releaseDate['16.3'] = '2022-01-26';
$lang->misc->releaseDate['16.2'] = '2022-01-17';
@@ -172,7 +172,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
$lang->misc->feature->all['16.5'][] = array('title' => 'Fix bug, merge all code to one package', 'desc' => '');
$lang->misc->feature->all['16.5.beta1'][] = array('title' => 'Fix bug, merge all code to one package', 'desc' => '');
$lang->misc->feature->all['16.4'][] = array('title' => 'Implement JIRA import function and improve plug-in extension mechanism.', 'desc' => '');
$lang->misc->feature->all['16.3'][] = array('title' => 'Kanban adds related plan/release/version/iteration functions, and the detail experience is optimized, fix bugs.', 'desc' => '');
$lang->misc->feature->all['16.2'][] = array('title' => 'Add kanban model project, fix bugs.', 'desc' => '');
+2 -2
View File
@@ -97,7 +97,7 @@ $lang->misc->feature->themeDesc = "<p>禅道15系列上线了全新的“
$lang->misc->feature->visionsDesc = "<p>从16.5开始增加了界面概念,用户可以在<span style='color:#0c60e1'>[研发综合界面]</span>中处理研发事务、在<span style='color:#0c60e1'>[迅捷界面]</span>处理日常办公事务。</p><p>在头像右侧即可查看当前所处界面,点击当前界面名称可查看和切换其他的界面。</p>";
$lang->misc->feature->visionsImage = 'theme/default/images/main/visions.png';
$lang->misc->releaseDate['16.5'] = '2022-02-22';
$lang->misc->releaseDate['16.5.beta1'] = '2022-03-16';
$lang->misc->releaseDate['16.4'] = '2022-02-15';
$lang->misc->releaseDate['16.3'] = '2022-01-26';
$lang->misc->releaseDate['16.2'] = '2022-01-17';
@@ -172,7 +172,7 @@ $lang->misc->releaseDate['7.2.stable'] = '2015-05-22';
$lang->misc->releaseDate['7.1.stable'] = '2015-03-07';
$lang->misc->releaseDate['6.3.stable'] = '2014-11-07';
$lang->misc->feature->all['16.5'][] = array('title' => '实现一码多面,多个禅道版本集成到一个包中。', 'desc' => '');
$lang->misc->feature->all['16.5.beta1'][] = array('title' => '将禅道收费版和开源版集成到一个包中,优化升级步骤。', 'desc' => '');
$lang->misc->feature->all['16.4'][] = array('title' => '实现JIRA导入功能,完善插件扩展机制。', 'desc' => '');
$lang->misc->feature->all['16.3'][] = array('title' => '看板增加关联计划/发布/版本/迭代功能,细节体验优化。', 'desc' => '');
$lang->misc->feature->all['16.2'][] = array('title' => '新增专业研发看板,可以创建看板模型项目,修复Bug。', 'desc' => '');
@@ -151,6 +151,7 @@
#programTableList .icon-project:before {content: '\e99c';}
#programTableList .icon-scrum:before {content: '\e9a2';}
#programTableList .icon-waterfall:before {content: '\e9a4';}
#programTableList .icon-kanban:before {content: '\e983';}
</style>
<?php js::set('originOrders', $originOrders);?>
<script>
+1
View File
@@ -10,6 +10,7 @@
* @link http://www.zentao.net
*/
?>
<?php chdir(__DIR__);?>
<?php include '../../common/view/gantt.html.php';?>
<style>
#ganttView {height: 600px;}
+2 -2
View File
@@ -13,7 +13,7 @@ $config->upgrade->maxVersion['max2_5'] = '16_1';
$config->upgrade->maxVersion['max2_6'] = '16_2';
$config->upgrade->maxVersion['max2_7'] = '16_3';
$config->upgrade->maxVersion['max2_8'] = '16_4';
$config->upgrade->maxVersion['max2_9'] = '16_5';
$config->upgrade->maxVersion['max3_0_beta1'] = '16_5_beta1';
$config->upgrade->bizVersion = array();
$config->upgrade->bizVersion['biz1_0'] = '9_5_1';
@@ -65,7 +65,7 @@ $config->upgrade->bizVersion['biz6_1'] = '16_1';
$config->upgrade->bizVersion['biz6_2'] = '16_2';
$config->upgrade->bizVersion['biz6_3'] = '16_3';
$config->upgrade->bizVersion['biz6_4'] = '16_4';
$config->upgrade->bizVersion['biz6_5'] = '16_5';
$config->upgrade->bizVersion['biz6_5_beta1'] = '16_5_beta1';
$config->upgrade->proVersion = array();
$config->upgrade->proVersion['pro1_0'] = '3_1';
+2 -2
View File
@@ -154,7 +154,7 @@ $lang->upgrade->fromVersions['16_1'] = '16.1';
$lang->upgrade->fromVersions['16_2'] = '16.2';
$lang->upgrade->fromVersions['16_3'] = '16.3';
$lang->upgrade->fromVersions['16_4'] = '16.4';
$lang->upgrade->fromVersions['16_5'] = '16.5';
$lang->upgrade->fromVersions['16_5_beta1'] = '16.5.beta1';
/* Pro. */
$lang->upgrade->fromVersions['pro1_0'] = 'Pro1.0';
@@ -307,7 +307,7 @@ $lang->upgrade->fromVersions['biz6_1'] = 'Biz6.1';
$lang->upgrade->fromVersions['biz6_2'] = 'Biz6.2';
$lang->upgrade->fromVersions['biz6_3'] = 'Biz6.3';
$lang->upgrade->fromVersions['biz6_4'] = 'Biz6.4';
$lang->upgrade->fromVersions['biz6_5'] = 'Biz6.5';
$lang->upgrade->fromVersions['biz6_5_beta1'] = 'Biz6.5.beta1';
/* Max. */
$lang->upgrade->fromVersions['max2_0_beta4'] = 'Max2.0.beta4';
+209 -1
View File
@@ -2,6 +2,13 @@
class Product
{
/**
* __construct
*
* @param mixed $user
* @access public
* @return void
*/
public function __construct($user)
{
global $tester;
@@ -9,12 +16,19 @@ class Product
$this->product = $tester->loadModel('product');
}
/**
* createObject
*
* @param array $param
* @access public
* @return void
*/
public function createObject($param = array())
{
global $createFields;
$whitelist = array();
$createFields = array('program' => 1, 'line' => 0, 'lineName' => '', 'newLine' => 0, 'name' => '', 'code' => '', 'PO' => 'admin', 'QD' => '', 'RD' => '',
'reviewer' => '', 'type' => 'normal', 'status' => 'normal', 'desc' => '', 'acl' => 'open', 'uid' => '');
'reviewer' => '', 'type' => 'normal', 'status' => 'normal', 'desc' => '', 'acl' => 'open', 'uid' => '');
foreach($createFields as $field => $defaultValue) $_POST[$field] = $defaultValue;
foreach($param as $key => $value) $_POST[$key] = $value;
@@ -35,6 +49,13 @@ class Product
}
}
/**
* testGetLatestProject
*
* @param mixed $productID
* @access public
* @return void
*/
public function testGetLatestProject($productID)
{
$project = $this->product->getLatestProject($productID);
@@ -42,71 +63,175 @@ class Product
return $project;
}
/**
* getAllProducts
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getAllProducts($programID)
{
return $this->product->getList($programID);
}
/**
* getAllProductsCount
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getAllProductsCount($programID)
{
return count($this->getAllProducts($programID));
}
/**
* getNoclosedProducts
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getNoclosedProducts($programID)
{
return $this->product->getList($programID, 'noclosed');
}
/**
* getNoclosedProductsCount
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getNoclosedProductsCount($programID)
{
return count($this->getNoclosedProducts($programID));
}
/**
* getClosedProducts
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getClosedProducts($programID)
{
return $this->product->getList($programID, 'closed');
}
/**
* getClosedProductsCount
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getClosedProductsCount($programID)
{
return count($this->getClosedProducts($programID));
}
/**
* getInvolvedProducts
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getInvolvedProducts($programID)
{
return $this->product->getList($programID, 'involved');
}
/**
* getInvolvedProductsCount
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getInvolvedProductsCount($programID)
{
return count($this->getInvolvedProducts($programID));
}
/**
* getProductsByLine
*
* @param int mixed $programID
* @param int $line
* @access public
* @return void
*/
public function getProductsByLine($programID, $line = 0)
{
return $this->product->getList($programID, 'all', 0, $line);
}
/**
* countProductsByLine
*
* @param int mixed $programID
* @param int $line
* @access public
* @return void
*/
public function countProductsByLine($programID, $line = 0)
{
return count($this->getProductsByLine($programID, $line));
}
/**
* getProductList
*
* @param int mixed $programID
* @param string $status
* @param int $line
* @access public
* @return void
*/
public function getProductList($programID, $status = 'all', $line = 0)
{
return $this->product->getList($programID, $status, 0, $line);
}
/**
* getProductCount
*
* @param int mixed $programID
* @param string $status
* @param int $line
* @access public
* @return void
*/
public function getProductCount($programID, $status = 'all', $line = 0)
{
return count($this->getProductList($programID, $status, $line));
}
/**
* getProductPairs
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getProductPairs($programID)
{
$pairs = $this->product->getPairs('', $programID);
if($pairs == array()) return '没有数据';
return $pairs;
}
/**
* getProductPairsCount
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getProductPairsCount($programID)
{
$pairsCount = count($this->getProductPairs($programID));
@@ -114,24 +239,52 @@ class Product
return $pairsCount;
}
/**
* getAllPairs
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getAllPairs($programID)
{
$pairs = $this->product->getPairs('all', $programID);
if($pairs == array()) return '没有数据';
return $pairs;
}
/**
* getAllPairsCount
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getAllPairsCount($programID)
{
$pairsCount = count($this->getAllPairs($programID));
if($pairsCount == '没有数据') return '0';
return $pairsCount;
}
/**
* getNoclosedPairs
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getNoclosedPairs($programID)
{
$pairs = $this->product->getPairs('noclosed', $programID);
if($pairs == array()) return '没有数据';
return $pairs;
}
/**
* getNoclosedPairsCount
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getNoclosedPairsCount($programID)
{
$pairsCount = count($this->getNoclosedPairs($programID));
@@ -139,6 +292,15 @@ class Product
return $pairsCount;
}
/**
* getProductPairsByOrder
*
* @param int mixed $programID
* @param string $orderBy
* @param string $mode
* @access public
* @return void
*/
public function getProductPairsByOrder($programID, $orderBy = 'id_desc', $mode = '')
{
$this->product->orderBy = $orderBy;
@@ -146,6 +308,13 @@ class Product
return checkOrder($pairs, $orderBy);
}
/**
* getAllProjectsByProduct
*
* @param int mixed $productID
* @access public
* @return void
*/
public function getAllProjectsByProduct($productID)
{
$projects = $this->product->getProjectListByProduct($productID, 'all');
@@ -153,6 +322,14 @@ class Product
return $projects;
}
/**
* getProjectsByStatus
*
* @param int mixed $productID
* @param string mixed $status
* @access public
* @return void
*/
public function getProjectsByStatus($productID, $status)
{
$projects = $this->product->getProjectListByProduct($productID, $browseType);
@@ -160,6 +337,13 @@ class Product
return $projects;
}
/**
* getProjectPairsByProductID
*
* @param int mixed $productID
* @access public
* @return void
*/
public function getProjectPairsByProductID($productID)
{
$projects = $this->product->getProjectPairsByProduct($productID, 0, 0);
@@ -167,6 +351,13 @@ class Product
return $projects;
}
/**
* getAppendProject
*
* @param int mixed $projectID
* @access public
* @return void
*/
public function getAppendProject($projectID)
{
$project = $this->product->getProjectPairsByProduct(10086, 0, $projectID);
@@ -174,6 +365,14 @@ class Product
return $project;
}
/**
* testIsClickable
*
* @param int mixed $productID
* @param string mixed $status
* @access public
* @return void
*/
public function testIsClickable($productID, $status)
{
$product = $this->product->getById($productID);
@@ -181,6 +380,15 @@ class Product
return $isClick == false ? 'false' : 'true';
}
/**
* updateObject
*
* @param string mixed $module
* @param int mixed $objectID
* @param array $param
* @access public
* @return void
*/
public function updateObject($module, $objectID, $param = array())
{
global $tester;
+349 -3
View File
@@ -1,6 +1,13 @@
<?php
class Program
{
/**
* __construct
*
* @param mixed $user
* @access public
* @return void
*/
public function __construct($user)
{
global $tester;
@@ -9,7 +16,14 @@ class Program
$this->program = $tester->loadModel('program');
}
function create($data)
/**
* create
*
* @param data mixed $data
* @access public
* @return void
*/
public function create($data)
{
global $app;
@@ -25,7 +39,15 @@ class Program
$app->dbh->query("DELETE FROM ". TABLE_PROGRAM ." where name = '" . $data['name']. "'");
return $program;
}
function createData($status)
/**
* createData
*
* @param int mixed $status
* @access public
* @return void
*/
public function createData($status)
{
$data = array(
'parent' => 0,
@@ -65,6 +87,13 @@ class Program
return $this->create($data);
}
/**
* createStakeholder
*
* @param int mixed $programID
* @access public
* @return void
*/
public function createStakeholder($programID)
{
$_POST['accounts'] = array('dev1', 'dev2');
@@ -73,6 +102,13 @@ class Program
return $this->program->getStakeholdersByPrograms($programID);
}
/**
* getBudgetLeft
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getBudgetLeft($programID)
{
$program = $this->program->getById(1);
@@ -80,6 +116,12 @@ class Program
return $this->program->getBudgetLeft($program);
}
/**
* getBudgetUnitList
*
* @access public
* @return void
*/
public function getBudgetUnitList()
{
global $app;
@@ -89,6 +131,13 @@ class Program
return $this->program->getBudgetUnitList();
}
/**
* getById
*
* @param iont mixed $programID
* @access public
* @return void
*/
public function getById($programID)
{
if(empty($this->program->getById($programID)))
@@ -101,6 +150,13 @@ class Program
}
}
/**
* getChildren
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getChildren($programID)
{
$programInfo = $this->program->getChildren($programID);
@@ -114,11 +170,25 @@ class Program
}
}
/**
* getInvolvedPrograms
*
* @param string mixed $account
* @access public
* @return void
*/
public function getInvolvedPrograms($account)
{
return $this->program->getInvolvedPrograms($account);
}
/**
* getPairsByList
*
* @param string $programIDList
* @access public
* @return void
*/
public function getPairsByList($programIDList = '')
{
if(empty($this->program->getPairsByList($programIDList)))
@@ -131,6 +201,12 @@ class Program
}
}
/**
* getPairs
*
* @access public
* @return void
*/
public function getPairs()
{
$programs = $this->program->getPairs();
@@ -138,26 +214,58 @@ class Program
return $programs;
}
/**
* getCount
*
* @access public
* @return void
*/
public function getCount()
{
return count($this->program->getPairs());
}
/**
* getParentPairs
*
* @access public
* @return void
*/
public function getParentPairs()
{
return $this->program->getParentPairs();
}
/**
* getCount1
*
* @access public
* @return void
*/
public function getCount1()
{
return count($this->program->getParentPairs());
}
/**
* getParentPM
*
* @param array mixed $programIdList
* @access public
* @return void
*/
public function getParentPM($programIdList)
{
return $this->program->getParentPM($programIdList);
}
/**
* getProductPairsByID
*
* @param int $programID
* @access public
* @return void
*/
public function getProductPairsByID($programID = 0)
{
$program = $this->program->getByID($programID);
@@ -165,36 +273,85 @@ class Program
return $this->program->getProductPairs($programID, 'assign', 'all');
}
/**
* getProductPairsByMod
*
* @param string $mode
* @access public
* @return void
*/
public function getProductPairsByMod($mode = 'assign')
{
return $this->program->getProductPairs(1, $mode, 'noclosed');
}
/**
* getProductPairsByStatus
*
* @param string $status
* @access public
* @return void
*/
public function getProductPairsByStatus($status = 'all')
{
return $this->program->getProductPairs(1, 'assign', $status);
}
/**
* getCount2
*
* @param int $programID
* @param string $mode
* @param string $status
* @access public
* @return void
*/
public function getCount2($programID = 0, $mode = 'assign', $status = 'all')
{
return count($this->program->getProductPairs($programID, $mode, $status));
}
/**
* getProgressList
*
* @access public
* @return void
*/
public function getProgressList()
{
return $this->program->getProgressList();
}
/**
* getCount3
*
* @access public
* @return void
*/
public function getCount3()
{
return count($this->program->getProgressList());
}
/**
* getStatsByProgramID
*
* @param int $programID
* @access public
* @return void
*/
public function getStatsByProgramID($programID = 0)
{
return count($this->program->getProjectStats($programID));
}
/**
* getStatsByStatus
*
* @param string $browseType
* @access public
* @return void
*/
public function getStatsByStatus($browseType = 'all')
{
$projects = $this->program->getProjectStats('0', $browseType);
@@ -209,6 +366,13 @@ class Program
return count($projects);
}
/**
* getStatsByOrder
*
* @param string $orderBy
* @access public
* @return void
*/
public function getStatsByOrder($orderBy = 'id_desc')
{
$projects = $this->program->getProjectStats('0', 'all', '0', $orderBy);
@@ -216,11 +380,26 @@ class Program
return checkOrder($projects, $orderBy);
}
/**
* getStatsAddProgramTitle
*
* @param int $programTitle
* @access public
* @return void
*/
public function getStatsAddProgramTitle($programTitle = 0)
{
return $this->program->getProjectStats('0', 'all', '0', 'id_desc', '', $programTitle);
}
/**
* getStatsByInvolved
*
* @param int $involved
* @param string $count
* @access public
* @return void
*/
public function getStatsByInvolved($involved = 0, $count = '')
{
$projects = $this->program->getProjectStats('0', 'all', '0', 'id_desc', '', '0', $involved);
@@ -229,6 +408,13 @@ class Program
return $projects;
}
/**
* getByPrograms
*
* @param int $programIdList
* @access public
* @return void
*/
public function getByPrograms($programIdList = 0)
{
$stakeHolders = $this->program->getStakeholdersByPrograms($programIdList);
@@ -236,6 +422,13 @@ class Program
return $stakeHolders;
}
/**
* getCount4
*
* @param int $programIdList
* @access public
* @return void
*/
public function getCount4($programIdList = 0)
{
$stakeHolders = $this->program->getStakeholdersByPrograms($programIdList);
@@ -243,6 +436,13 @@ class Program
return count($stakeHolders);
}
/**
* getByID1
*
* @param int $programID
* @access public
* @return void
*/
public function getByID1($programID = 0)
{
$stakeholders = $this->program->getStakeholders($programID);
@@ -250,6 +450,13 @@ class Program
return $stakeholders;
}
/**
* getByOrder
*
* @param string $orderBy
* @access public
* @return void
*/
public function getByOrder($orderBy = 'id_desc')
{
$stakeholders = $this->program->getStakeholders(2, $orderBy);
@@ -257,6 +464,13 @@ class Program
return checkOrder($stakeholders, $orderBy);
}
/**
* getCount5
*
* @param int $programID
* @access public
* @return void
*/
public function getCount5($programID = 0)
{
$stakeholders = $this->program->getStakeholders($programID);
@@ -264,6 +478,13 @@ class Program
return count($stakeholders);
}
/**
* getById2
*
* @param mixed $programID
* @access public
* @return void
*/
public function getById2($programID)
{
if(empty($this->program->getTeamMemberPairs($programID)))
@@ -276,11 +497,25 @@ class Program
}
}
/**
* getCount6
*
* @param mixed $programID
* @access public
* @return void
*/
public function getCount6($programID)
{
return count($this->program->getTeamMemberPairs($programID));
}
/**
* getById3
*
* @param int $programID
* @access public
* @return void
*/
public function getById3($programID = 0)
{
if(empty($this->program->getTopById($programID)))
@@ -289,16 +524,30 @@ class Program
}
else
{
return $this->program->getByTopId($programID);
return $this->program->getTopById($programID);
}
}
/**
* getTopPairs
*
* @param string $count
* @access public
* @return void
*/
public function getTopPairs($count = '')
{
if($count == 'count') return count($this->program->getTopPairs());
return $this->program->getTopPairs();
}
/**
* getUnfinished
*
* @param mixed $programID
* @access public
* @return void
*/
public function getUnfinished($programID)
{
$program = $this->program->getById($programID);
@@ -306,11 +555,25 @@ class Program
return $this->program->hasUnfinished($program);
}
/**
* getKanbanGroup
*
* @param string $type
* @access public
* @return void
*/
public function getKanbanGroup($type = ''){
$program = $this->program->getKanbanGroup();
return $program;
}
/**
* getListByStatus
*
* @param mixed $status
* @access public
* @return void
*/
public function getListByStatus($status)
{
$this->program->cookie->showClosed = 'ture';
@@ -323,17 +586,38 @@ class Program
return count($programs);
}
/**
* getListByOrder
*
* @param mixed $orderBy
* @access public
* @return void
*/
public function getListByOrder($orderBy)
{
$programs = $this->program->getList('all', $orderBy);
return checkOrder($programs, $orderBy);
}
/**
* getListByProgramID
*
* @param int $programID
* @access public
* @return void
*/
public function getListByProgramID($programID = 0)
{
return count($this->program->getProjectList($programID));
}
/**
* getListByStatusNo
*
* @param string $browseType
* @access public
* @return void
*/
public function getListByStatusNo($browseType = 'all')
{
$projects = $this->program->getProjectList('0', $browseType);
@@ -348,6 +632,13 @@ class Program
return count($projects);
}
/**
* getListByOrderId
*
* @param string $orderBy
* @access public
* @return void
*/
public function getListByOrderId($orderBy = 'id_desc')
{
$projects = $this->program->getProjectList('0', 'all', '0', $orderBy);
@@ -355,11 +646,26 @@ class Program
return checkOrder($projects, $orderBy);
}
/**
* getListAddProgramTitle
*
* @param int $programTitle
* @access public
* @return void
*/
public function getListAddProgramTitle($programTitle = 0)
{
return $this->program->getProjectList('0', 'all', '0', 'id_desc', '', $programTitle);
}
/**
* getListByInvolved
*
* @param int $involved
* @param string $count
* @access public
* @return void
*/
public function getListByInvolved($involved = 0, $count = '')
{
$projects = $this->program->getProjectList('0', 'all', '0', 'id_desc', '', '0', $involved);
@@ -368,6 +674,13 @@ class Program
return $projects;
}
/**
* setTreePath
*
* @param mixed $programID
* @access public
* @return void
*/
public function setTreePath($programID)
{
$programPath = $this->program->setTreePath($programID);
@@ -381,6 +694,14 @@ class Program
}
}
/**
* update
*
* @param mixed $proguamID
* @param mixed $data
* @access public
* @return void
*/
public function update($programID, $data)
{
global $app;
@@ -393,6 +714,14 @@ class Program
return $result;
}
/**
* updateProgram
*
* @param mixed $programID
* @param int $status
* @access public
* @return void
*/
public function updateProgram($programID, $status = 0)
{
$data = array(
@@ -428,5 +757,22 @@ class Program
}
return $this->update($programID, $data);
}
/**
* Test process node method.
*
* @param int $programID
* @param int $parentID
* @param string $oldPath
* @param int $oldGrade
* @access public
* @return void
*/
public function processNode($programID, $parentID, $oldPath, $oldGrade)
{
$programs = $this->program->processNode($programID, $parentID, $oldPath, $oldGrade);
return $programs;
}
}
?>
+220 -146
View File
@@ -1,6 +1,13 @@
<?php
class Project
{
/**
* __construct
*
* @param mixed $user
* @access public
* @return void
*/
public function __construct($user)
{
global $tester;
@@ -10,12 +17,12 @@ class Project
}
/**
* * Check project status after activate a project.▫
* *▫
* * @param int $projectID▫
* * @access public
* * @return bool
* */
* checkStatus
*
* @param int mixed $projectID
* @access public
* @return void
*/
public function checkStatus($projectID)
{
$oldProject = $this->project->getById($projectID);
@@ -29,17 +36,25 @@ class Project
return true;
}
/**
* checkHasChildren
*
* @param int mixed $projectID
* @access public
* @return void
*/
public function checkHasChildren($projectID)
{
return $this->project->checkHasChildren($projectID);
}
/**
* Check project status after close a project.
* checkStatusOff
*
* @param int $projectID
* @param int mixed $projectID
* @param array $closeTime
* @access public
* @return bool
* @return void
*/
public function checkStatusOff($projectID, $closeTime = array())
{
@@ -60,11 +75,12 @@ class Project
}
/**
* Check budget unit list.
* checkBudgetUnitList
*
* @param string $checkList▫
* @param string $checkList
* @param 'USD' => '美元') $'USD' => '美元')
* @access public
* @return bool
* @return void
*/
public function checkBudgetUnitList($checkList = array('CNY' => '人民币', 'USD' => '美元'))
{
@@ -77,13 +93,13 @@ class Project
}
/**
* * Check projectList get from getByIdList.
* *
* * @param array $projectIdList
* * @param int $count
* * @access public
* * @return array
* */
* getByIdList
*
* @param array mixed $projectIdList
* @param int mixed $count
* @access public
* @return void
*/
public function getByIdList($projectIdList, $count)
{
$projectList = $this->project->getByIdList($projectIdList);
@@ -92,73 +108,73 @@ class Project
}
/**
* * Get project by ID.
* *
* * @param int $projectID
* * @access public
* * @return object
* */
* getProjectByID
*
* @param int mixed $projectID
* @access public
* @return void
*/
public function getProjectByID($projectID)
{
return $this->project->getByID($projectID);
}
/**
* * Get program by ID.
* *
* * @param int $programID
* * @access public
* * @return object
* */
* getProgramByID
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getProgramByID($programID)
{
return $this->project->getByID($programID, 'program');
}
/**
* * Get sprint by ID.
* *
* * @param int $sprintID
* * @access public
* * @return object
* */
/**
* getSprintByID
*
* @param int mixed $sprintID
* @access public
* @return void
*/
public function getSprintByID($sprintID)
{
return $this->project->getByID($sprintID, 'sprint');
}
/**
* * Get stage by ID.
* *
* * @param int $stageID
* * @access public
* * @return object
* */
* getStageByID
*
* @param int mixed $stageID
* @access public
* @return void
*/
public function getStageByID($stageID)
{
return $this->project->getByID($stageID, 'stage');
}
/**
* * Get Kanban by ID,
* *
* * @param int $kanbanID
* * @access public
* * @return void
* */
* getKanbanByID
*
* @param int mixed $kanbanID
* @access public
* @return void
*/
public function getKanbanByID($kanbanID)
{
return $this->project->getByID($kanbanID, 'kanban');
}
/**
* * Get project by status.
* *
* * @param string $status
* * @access public
* * @return int
* */
* getBystatus
*
* @param string mixed $status
* @access public
* @return void
*/
public function getBystatus($status)
{
$projects = $this->project->getOverviewList('byStatus', $status);
@@ -189,12 +205,12 @@ class Project
}
/**
* * Get project list by order.
* *
* * @param string $orderBy
* * @access public
* * @return void
* */
* getListByOrder
*
* @param string mixed $orderBy
* @access public
* @return void
*/
public function getListByOrder($orderBy)
{
$projects = $this->project->getOverviewList('byStatus', 'wait', $orderBy);
@@ -202,24 +218,24 @@ class Project
}
/**
* * Get project by ID.
* *
* * @param int $projectID
* * @access public
* * @return void
* */
* getByID
*
* @param mixed $projectID
* @access public
* @return void
*/
public function getByID($projectID)
{
return $this->project->getOverviewList('byID', $projectID);
}
/**
* * Get project pairs by ID list.
* *
* * @param array $IDList
* * @access public
* * @return int
* */
* getByIdListFind
*
* @param array mixed $IDList
* @access public
* @return void
*/
public function getByIdListFind($IDList)
{
$projects = $this->project->getPairsByIdList($IDList);
@@ -248,12 +264,12 @@ class Project
}
/**
* * Get parentName.
* *▫
* * @param int $projectID▫
* * @access public
* * @return array
* */
* getParentName
*
* @param int mixed $projectID
* @access public
* @return void
*/
public function getParentName($projectID)
{
$program = $this->project->getParentName($projectID);
@@ -262,12 +278,12 @@ class Project
}
/**
* * Get team member pairs.▫
* *▫
* * @param int $projectID▫
* * @access public
* * @return int
* */
* getTeamMemberPairs
*
* @param int mixed $projectID
* @access public
* @return void
*/
public function getTeamMemberPairs($projectID)
{
$members = array_filter($this->project->getTeamMemberPairs($projectID));
@@ -276,14 +292,13 @@ class Project
}
/**
* /**
* * Check members.▫
* *▫
* * @param array $members▫
* * @param array $users▫
* * @access public
* * @return bool
* */
* checkMembers
*
* @param int mixed $members
* @param string mixed $users
* @access public
* @return void
*/
public function checkMembers($members, $users)
{
foreach($users as $user)
@@ -294,14 +309,14 @@ class Project
}
/**
* Get team memberm.
*▫
* @param int $projectID▫
* @param array $users▫
* @param bool $tutorial▫
* @access public
* @return int
*/
* getTeamMembers
*
* @param int mixed $projectID
* @param striong mixed $users
* @param boolean mixed $tutorial
* @access public
* @return void
*/
public function getTeamMembers($projectID, $users, $tutorial = false)
{
if($tutorial) define('TUTORIAL', true);
@@ -311,12 +326,12 @@ class Project
return count($members);
}
/*
* Check project status after start a project.
*▫
* @param int $projectID▫
/**
* checkStatusBegin
*
* @param int mixed $projectID
* @access public
* @return bool
* @return void
*/
public function checkStatusBegin($projectID)
{
@@ -330,12 +345,12 @@ class Project
return true;
}
/*
* Check project status after suspend a project.
/**
* checkStatusStop
*
* @param int $projectID▫
* @param int mixed $projectID
* @access public
* @return bool
* @return void
*/
public function checkStatusStop($projectID)
{
@@ -349,6 +364,14 @@ class Project
return true;
}
/**
* getExecutionData
*
* @param int mixed $projectID
* @param string $type
* @access public
* @return void
*/
public function getExecutionData($projectID, $type = '')
{
$table = 'zt_project';
@@ -358,12 +381,12 @@ class Project
}
/**
* * Get builds from getDataByProject.
* *
* * @param int $projectID
* * @access public
* * @return array
* */
* getBuildData
*
* @param int mixed $projectID
* @access public
* @return void
*/
public function getBuildData($projectID)
{
$builds = $this->project->getDataByProject(TABLE_BUILD, $projectID);
@@ -372,12 +395,12 @@ class Project
}
/**
* * Get releases from getDataByProject.
* *
* * @param int $projectID
* * @access public
* * @return array
* */
* getReleaseData
*
* @param int mixed $projectID
* @access public
* @return void
*/
public function getReleaseData($projectID)
{
$releases = $this->project->getDataByProject(TABLE_RELEASE, $projectID);
@@ -385,6 +408,13 @@ class Project
return $releases;
}
/**
* getByProgram
*
* @param int mixed $programID
* @access public
* @return void
*/
public function getByProgram($programID)
{
$projects = $this->project->getPairsByProgram($programID);
@@ -401,13 +431,12 @@ class Project
}
/**
* Get project pairs by status.
* getByStatusPairs
*
* @param string $status
* @param string mixed $status
* @access public
* @return int
* @return void
*/
public function getByStatusPairs($status)
{
$projects = $this->project->getPairsByProgram(2, $status);
@@ -424,19 +453,25 @@ class Project
}
/**
* Get project list by order.
* getConsumed
*
* @param string $orderBy
* @param array mixed $projectIdList
* @access public
* @return int
* @return void
*/
public function getConsumed($projectIdList)
{
$projects = $this->project->getProjectsConsumed($projectIdList, $time = '');
return $projects;
}
/**
* getByStatusExe
*
* @param string mixed $status
* @access public
* @return void
*/
public function getByStatusExe($status)
{
$executions = $this->project->getStats(0, $status);
@@ -451,12 +486,12 @@ class Project
return count($executions);
}
/*
* Get executions by project.
/**
* getByProject
*
* @param int $projectID
* @param int mixed $projectID
* @access public
* @return int
* @return void
*/
public function getByProject($projectID)
{
@@ -469,49 +504,88 @@ class Project
return count($executions);
}
/*
* Get executions by order.
/**
* getTotalBugBy
*
* @param string $orderBy
* @param array mixed $projectIdList
* @param string mixed $status
* @access public
* @return bool
* @return void
*/
public function getTotalBugBy($projectIdList, $status)
{
$projects = $this->project->getTotalBugByProject($projectIdList, $status);
return $projects;
}
/**
* getWorkHour
*
* @param int mixed $projectID
* @access public
* @return void
*/
public function getWorkHour($projectID)
{
$projects = $this->project->getWorkhour($projectID);
return $projects;
}
/**
* getInfoList
*
* @param string mixed $status
* @access public
* @return void
*/
public function getInfoList($status)
{
$projects = $this->project->getInfoList($status);
return $projects;
}
/**
* getStatData
*
* @param int mixed $projectID
* @access public
* @return void
*/
public function getStatData($projectID)
{
$projects = $this->project->getStatData($projectID);
return $projects;
}
/**
* getTotalStoriesByProject
*
* @param int $projectID
* @param array $productIdList
* @param string $type
* @param string $status
* @access public
* @return void
*/
public function getTotalStoriesByProject($projectID = 0, $productIdList = array(), $type = 'story', $status = 'all')
{
$projects = $this->project->getTotalStoriesByProject($projectID = 0, $productIdList = array(), $type = 'story', $status = 'all');
return $projects;
}
/**
* saveState
*
* @param int mixed $projectID
* @access public
* @return void
*/
public function saveState($projectID)
{
$projects = $this->project->getPairsByProgram();
$object = $this->project->saveState($projectID, $projects);
return $object;
}
}
?>
Binary file not shown.
+12 -12
View File
@@ -12,13 +12,13 @@ cid=1
pid=1
测试正常的创建 >> case1
测试不填产品代号的情况 >> 『code』不能为空。
测试创建重复的产品 >> 『code』已经有『testcase1』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。
测试不填产品名称的情况 >> 『name』不能为空。
测试不填产品代号的情况 >> 『产品代号』不能为空。
测试创建重复的产品 >> 『产品代号』已经有『testcase1』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。
测试不填产品名称的情况 >> 『产品名称』不能为空。
测试传入name和code >> case3,testcase3
测试传入program、name、code >> 3,case4,testcase4
测试传入program、name、code、type、status >> 4,branch,closed
测试不填权限控制的情况 >> 『code』不能为空。
测试不填权限控制的情况 >> 『访问控制』不符合格式,应当为:『/open|private|custom/』。
*/
@@ -33,12 +33,12 @@ $t_pronamecode = array('program' => '3', 'name' => 'case4', 'code' => 'testcase4
$t_intypestatus = array('program' => '4', 'name' => 'case5', 'code' => 'testcase5', 'type' => 'branch', 'status' => 'closed');
$t_noacl = array('name' => 'case12', 'code' => 'testcase1', 'acl' => '');
r($createtest->createObject($t_create)) && p('name') && e('case1'); // 测试正常的创建
r($createtest->createObject($t_noid)) && p('code:0') && e('『code』不能为空。'); // 测试不填产品代号的情况
r($createtest->createObject($t_repeat)) && p('code:0') && e('『code』已经有『testcase1』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); // 测试创建重复的产品
r($createtest->createObject($t_noname)) && p('name:0') && e('『name』不能为空。'); // 测试不填产品名称的情况
r($createtest->createObject($t_namecode)) && p('name,code') && e('case3,testcase3'); // 测试传入name和code
r($createtest->createObject($t_pronamecode)) && p('program,name,code') && e('3,case4,testcase4'); // 测试传入program、name、code
r($createtest->createObject($t_intypestatus)) && p('program,type,status') && e('4,branch,closed'); // 测试传入program、name、code、type、status
r($createtest->createObject($t_noacl)) && p('acl:0') && e('『code』不能为空。'); // 测试不填权限控制的情况
r($createtest->createObject($t_create)) && p('name') && e('case1'); // 测试正常的创建
r($createtest->createObject($t_noid)) && p('code:0') && e('『产品代号』不能为空。'); // 测试不填产品代号的情况
r($createtest->createObject($t_repeat)) && p('code:0') && e('『产品代号』已经有『testcase1』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); // 测试创建重复的产品
r($createtest->createObject($t_noname)) && p('name:0') && e('『产品名称』不能为空。'); // 测试不填产品名称的情况
r($createtest->createObject($t_namecode)) && p('name,code') && e('case3,testcase3'); // 测试传入name和code
r($createtest->createObject($t_pronamecode)) && p('program,name,code') && e('3,case4,testcase4'); // 测试传入program、name、code
r($createtest->createObject($t_intypestatus)) && p('program,type,status') && e('4,branch,closed'); // 测试传入program、name、code、type、status
r($createtest->createObject($t_noacl)) && p('acl:0') && e('『访问控制』不符合格式,应当为:『/open|private|custom/』。'); // 测试不填权限控制的情况
system("./ztest init");
@@ -9,7 +9,7 @@ title=测试productModel->getLatestProject();
cid=1
pid=1
测试产品25关联的最后一个未关闭的项目,按begin字段排序 >> 315
测试产品25关联的最后一个未关闭的项目,按begin字段排序 >> 395
测试产品38关联的最后一个未关闭的项目,按begin字段排序 >> 688
传入不存在的产品 >> 没有数据
@@ -21,6 +21,6 @@ $t_project25 = array('id'=>'25');
$t_project38 = array('id'=>'38');
$t_project101 = array('id'=>'101');
r($product->testGetLatestProject($t_project25['id'])) && p('id') && e('315'); // 测试产品25关联的最后一个未关闭的项目,按begin字段排序
r($product->testGetLatestProject($t_project25['id'])) && p('id') && e('395'); // 测试产品25关联的最后一个未关闭的项目,按begin字段排序
r($product->testGetLatestProject($t_project38['id'])) && p('id') && e('688'); // 测试产品38关联的最后一个未关闭的项目,按begin字段排序
r($product->testGetLatestProject($t_project101['id'])) && p() && e('没有数据'); // 传入不存在的产品
@@ -19,7 +19,7 @@ pid=1
$tester = new Product('admin');
$t_return = array('1', '101', '15', '701');
$t_return = array('1', '101', '15', '7010');
r($tester->getProjectPairsByProductID($t_return[0])) && p('11') && e('项目1'); // 返回产品1关联的项目11名字
r($tester->getProjectPairsByProductID($t_return[0])) && p('21') && e('项目11'); // 返回产品1关联的项目21名字
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
#This script is use to rename files
for file in * ;
do mv $file `echo $file | tr 'A-Z' 'a-z'`;
done
+66
View File
@@ -0,0 +1,66 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/product.class.php';
su('admin');
/**
title=测试productModel->create();
cid=1
pid=1
测试正常的创建 >> case1
测试不填产品代号的情况 >> 『code』不能为空。
测试创建重复的产品 >> 『code』已经有『testcase1』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。
测试不填产品名称的情况 >> 『name』不能为空。
测试传入name和code >> case3,testcase3
测试传入program、name、code >> 3,case4,testcase4
测试传入program、name、code、type、status >> 4,branch,closed
*/
$config = new stdClass();
$config->createFields->product = array('program' => '', 'name' => '', 'code' => '', 'PO' => '', 'QD' => '', 'RD' => '', 'type' => 'normal', 'status' => 'normal', 'desc' => '', 'acl' => 'private');
/*
function createObject($module = '', $param = array())
{
global $config;
foreach($config->createFields->$module as $field => $defaultValue) $_POST[$field] = $defaultValue;
foreach($param as $key => $value) $_POST[$key] = $value;
global $tester;
$objectModel = $tester->loadModel($module);
$objectID = $objectModel->create();
unset($_POST);
if(dao::isError())
{
return dao::getError();
}
else
{
$object = $objectModel->getByID($objectID);
return $object;
}
}*/
$createObject = new Product('admin');
$create1 = array('name' => 'case1', 'code' => 'testcase1');
$create2 = array('name' => 'case2');
$create3 = array('name' => 'case1', 'code' => 'testcase1');
$create4 = array('code' => 'testcase1');
$create5 = array('name' => 'case3', 'code' => 'testcase3');
$create6 = array('program' => '3', 'name' => 'case4', 'code' => 'testcase4');
$create7 = array('program' => '4', 'name' => 'case5', 'code' => 'testcase5', 'type' => 'branch', 'status' => 'closed');
r($createObject->createObject('product', $create1)) && p('name') && e('case1'); // 测试正常的创建
r($createObject->createObject('product', $create2)) && p('code:0') && e('『code』不能为空。'); // 测试不填产品代号的情况
r($createObject->createObject('product', $create3)) && p('code:0') && e('『code』已经有『testcase1』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); // 测试创建重复的产品
r($createObject->createObject('product', $create4)) && p('name:0') && e('『name』不能为空。'); // 测试不填产品名称的情况
r($createObject->createObject('product', $create5)) && p('name,code') && e('case3,testcase3'); // 测试传入name和code
r($createObject->createObject('product', $create6)) && p('program,name,code') && e('3,case4,testcase4'); // 测试传入program、name、code
r($createObject->createObject('product', $create7)) && p('program,type,status') && e('4,branch,closed'); // 测试传入program、name、code、type、status
system("./ztest init");
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/product.class.php';
/**
title=测试productModel->getLatestProject();
cid=1
pid=1
测试产品25关联的最后一个未关闭的项目,按begin字段排序 >> 315
测试产品38关联的最后一个未关闭的项目,按begin字段排序 >> 阶段588
传入不存在的产品 >> 没有数据
*/
$project = new Product('admin');
#var_dump($z->testGetLatestProject(38));die;
r($project->testGetLatestProject(25)) && p('id') && e('315'); // 测试产品25关联的最后一个未关闭的项目,按begin字段排序
r($project->testGetLatestProject(38)) && p('name') && e('阶段588'); // 测试产品38关联的最后一个未关闭的项目,按begin字段排序
r($project->testGetLatestProject(101)) && p() && e('没有数据'); // 传入不存在的产品
+102
View File
@@ -0,0 +1,102 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
/**
title=productModel->getList();
cid=1
pid=1
返回项目集1下的产品数量 >> 9
测试传入programID=0的情况 >> 100
传入不存在的项目集 >> 0
返回项目集1下的未关闭的产品数量 >> 5
获取所有的未关闭的产品数量 >> 60
返回项目集1下的关闭了的产品数量 >> 4
返回所有的未关闭的产品数量 >> 40
返回项目集1下的与当前用户有关系的产品数量 >> 0
返回项目集1下产品线1的产品数量 >> 9
返回项目集1下产品线2的产品数量 >> 0
*/
class Tester
{
public function __construct($user)
{
global $tester;
su($user);
$this->product = $tester->loadModel('product');
}
public function getAllProducts($programID)
{
return $this->product->getList($programID);
}
public function getAllProductsCount($programID)
{
return count($this->getAllProducts($programID));
}
public function getNoclosedProducts($programID)
{
return $this->product->getList($programID, 'noclosed');
}
public function getNoclosedProductsCount($programID)
{
return count($this->getNoclosedProducts($programID));
}
public function getClosedProducts($programID)
{
return $this->product->getList($programID, 'closed');
}
public function getClosedProductsCount($programID)
{
return count($this->getClosedProducts($programID));
}
public function getInvolvedProducts($programID)
{
return $this->product->getList($programID, 'involved');
}
public function getInvolvedProductsCount($programID)
{
return count($this->getInvolvedProducts($programID));
}
public function getProductsByLine($programID, $line = 0)
{
return $this->product->getList($programID, 'all', 0, $line);
}
public function countProductsByLine($programID, $line = 0)
{
return count($this->getProductsByLine($programID, $line));
}
public function getProductList($programID, $status = 'all', $line = 0)
{
return $this->product->getList($programID, $status, 0, $line);
}
public function getProductCount($programID, $status = 'all', $line = 0)
{
return count($this->getProductList($programID, $status, $line));
}
}
$adminTester = new Tester('admin');
r($adminTester->getAllProductsCount(1)) && p() && e('9'); // 返回项目集1下的产品数量
r($adminTester->getAllProductsCount(0)) && p() && e('100'); // 测试传入programID=0的情况
r($adminTester->getAllProductsCount(11)) && p() && e('0'); // 传入不存在的项目集
r($adminTester->getNoclosedProductsCount(1)) && p() && e('5'); // 返回项目集1下的未关闭的产品数量
r($adminTester->getNoclosedProductsCount(0)) && p() && e('60'); // 获取所有的未关闭的产品数量
r($adminTester->getClosedProductsCount(1)) && p() && e('4'); // 返回项目集1下的关闭了的产品数量
r($adminTester->getClosedProductsCount(0)) && p() && e('40'); // 返回所有的未关闭的产品数量
r($adminTester->getInvolvedProductsCount(1)) && p() && e('0'); // 返回项目集1下的与当前用户有关系的产品数量
r($adminTester->countProductsByLine(1, 1)) && p() && e('9'); // 返回项目集1下产品线1的产品数量
r($adminTester->countProductsByLine(1, 2)) && p() && e('0'); // 返回项目集1下产品线2的产品数量
+40
View File
@@ -0,0 +1,40 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/productBox.class.php';
/**
title=测试productModel->getPairs();
cid=1
pid=1
测试项目集10下的11号产品 >> 正常产品11
测试项目集10下的55号产品 >> 多分支产品55
测试项目集10下的99号产品 >> 多平台产品99
测试不存在的项目集 >> 没有数据
返回所有产品的数量 >> 100
返回项目集10下的所有产品 >> 9
测试项目集10下的未关闭产品5 >> 正常产品6
返回项目集10下的未关闭产品的数量 >> 5
测试顺序program_desc >> 1
测试顺序program_asc >> 1
测试顺序type_desc >> 1
*/
$tester = new productBox('admin');
var_dump($tester->getProductPairsByOrder(10, '', 'program_desc'));die;
r($tester->getProductPairs(10)) && p('11') && e('正常产品11'); // 测试项目集10下的11号产品
r($tester->getProductPairs(10)) && p('55') && e('多分支产品55'); // 测试项目集10下的55号产品
r($tester->getProductPairs(10)) && p('99') && e('多平台产品99'); // 测试项目集10下的99号产品
r($tester->getProductPairs(11)) && p() && e('没有数据'); // 测试不存在的项目集
r($tester->getProductPairsCount(0)) && p() && e('100'); // 返回所有产品的数量
r($tester->getProductPairsCount(10)) && p() && e('9'); // 返回项目集10下的所有产品
r($tester->getNoclosedPairs(5)) && p('6') && e('正常产品6'); // 测试项目集10下的未关闭产品5
r($tester->getNoclosedPairsCount(10)) && p() && e('5'); // 返回项目集10下的未关闭产品的数量
r($tester->getProductPairsByOrder(10, '', 'program_desc')) && p() && e('1'); // 测试顺序program_desc
r($tester->getProductPairsByOrder(11, '', 'program_asc')) && p() && e('1'); // 测试顺序program_asc
r($tester->getProductPairsByOrder(11, '', 'type_desc')) && p() && e('1'); // 测试顺序type_desc
+95
View File
@@ -0,0 +1,95 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
/**
title=测试productModel->getPairs();
cid=1
pid=1
测试项目集10下的11号产品 >> 正常产品11
测试项目集10下的55号产品 >> 多分支产品55
测试项目集10下的99号产品 >> 多平台产品99
测试不存在的项目集 >> 没有数据
返回所有产品的数量 >> 100
返回项目集10下的所有产品 >> 9
测试项目集10下的未关闭产品5 >> 正常产品6
返回项目集10下的未关闭产品的数量 >> 5
测试顺序program_desc >> 1
测试顺序program_asc >> 1
测试顺序type_desc >> 1
*/
class Tester
{
public function __construct($user, $orderBy = 'id_desc')
{
global $tester;
su($user);
$this->product = $tester->loadModel('product');
$this->config = new stdclass();
$this->config->product->orderBy = $orderBy;
}
public function getProductPairs($programID)
{
$pairs = $this->product->getPairs('', $programID);
if($pairs == array()) return '没有数据';
return $pairs;
}
public function getProductPairsCount($programID)
{
$pairsCount = count($this->getProductPairs($programID));
if($pairsCount == '没有数据') return '0';
return $pairsCount;
}
public function getAllPairs($programID)
{
$pairs = $this->product->getPairs('all', $programID);
if($pairs == array()) return '没有数据';
return $pairs;
}
public function getAllPairsCount($programID)
{
$pairsCount = count($this->getAllPairs($programID));
if($pairsCount == '没有数据') return '0';
return $pairsCount;
}
public function getNoclosedPairs($programID)
{
$pairs = $this->product->getPairs('noclosed', $programID);
if($pairs == array()) return '没有数据';
return $pairs;
}
public function getNoclosedPairsCount($programID)
{
$pairsCount = count($this->getNoclosedPairs($programID));
if($pairsCount == '没有数据') return '0';
return $pairsCount;
}
public function getProductPairsByOrder($programID, $mode = '', $orderBy = 'id_desc')
{
$this->config->product->orderBy = $orderBy;
$pairs = $this->product->getPairs($mode, $programID);
return checkOrder($pairs, $orderBy);
}
}
$tester = new Tester('admin');
r($tester->getProductPairs(10)) && p('11' && e('正常产品11'); // 测试项目集10下的11号产品
r($tester->getProductPairs(10)) && p('55') && e('多分支产品55'); // 测试项目集10下的55号产品
r($tester->getProductPairs(10)) && p('99') && e('多平台产品99'); // 测试项目集10下的99号产品
r($tester->getProductPairs(11)) && p() && e('没有数据'); // 测试不存在的项目集
r($tester->getProductPairsCount(0)) && p() && e('100'); // 返回所有产品的数量
r($tester->getProductPairsCount(10)) && p() && e('9'); // 返回项目集10下的所有产品
r($tester->getNoclosedPairs(5)) && p('6') && e('正常产品6'); // 测试项目集10下的未关闭产品5
r($tester->getNoclosedPairsCount(10)) && p() && e('5'); // 返回项目集10下的未关闭产品的数量
r($tester->getProductPairsByOrder(10, '', 'program_desc')) && p() && e('1'); // 测试顺序program_desc
r($tester->getProductPairsByOrder(11, '', 'program_asc')) && p() && e('1'); // 测试顺序program_asc
r($tester->getProductPairsByOrder(11, '', 'type_desc')) && p() && e('1'); // 测试顺序type_desc
+43
View File
@@ -0,0 +1,43 @@
#!/usr/bin/env php
<?php include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
/**
title=productModel->getProjectListByProduct();
cid=1
pid=1
返回产品1关联的项目11名字 >> 项目11
返回产品1关联的项目21名字 >> 项目1
传入不存在的产品 >> 没有数据
*/
class Tester
{
public function __construct($user)
{
global $tester;
su($user);
$this->product = $tester->loadModel('product');
}
public function getAllProjectsByProduct($productID)
{
$projects = $this->product->getProjectListByProduct($productID, 'all');
if($projects == array()) return '没有数据';
return $projects;
}
public function getProjectsByStatus($productID, $status)
{
$projects = $this->product->getProjectListByProduct($productID, $browseType);
if($projects == array()) return '没有数据';
return $projects;
}
}
$tester = new Tester('admin');
r($tester->getAllProjectsByProduct(1)) && p('21:name') && e('项目11'); // 返回产品1关联的项目11名字
r($tester->getAllProjectsByProduct(1)) && p('11:name') && e('项目1'); // 返回产品1关联的项目21名字
r($tester->getAllProjectsByProduct(101)) && p() && e('没有数据'); // 传入不存在的产品
+27
View File
@@ -0,0 +1,27 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/productBox.class.php';
/**
title=productModel->getProjectPairsByProduct();
cid=1
pid=1
返回产品1关联的项目11名字 >> 项目1
返回产品1关联的项目21名字 >> 项目11
传入不存在的产品 >> 没有数据
返回id为15的项目名 >> 项目5
传入不存在的项目id >> 没有数据
*/
$tester = new productBox('admin');
r($tester->getProjectPairsByProductID(1)) && p('11') && e('项目1'); // 返回产品1关联的项目11名字
r($tester->getProjectPairsByProductID(1)) && p('21') && e('项目11'); // 返回产品1关联的项目21名字
r($tester->getProjectPairsByProductID(101)) && p() && e('没有数据'); // 传入不存在的产品
r($tester->getAppendProject(15)) && p('15') && e('项目5'); // 返回id为15的项目名
r($tester->getAppendProject(701)) && p() && e('没有数据'); // 传入不存在的项目id
+25
View File
@@ -0,0 +1,25 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/productBox.class.php';
su('admin');
/**
title=测试productModel->isClickable();
cid=1
pid=1
status为normal,action为close >> true
status为close,action为close >> false
status为normal,action为start >> true
status为close,action为start >> true
*/
$adminTester = new productBox('admin');
r($adminTester->testIsClickable(2, 'close')) && p() && e('true'); // status为normal,action为close
r($adminTester->testIsClickable(75, 'close')) && p() && e('false'); // status为close,action为close
r($adminTester->testIsClickable(2, 'start')) && p() && e('true'); // status为normal,action为start
r($adminTester->testIsClickable(75, 'start')) && p() && e('true'); // status为close,action为start
+69
View File
@@ -0,0 +1,69 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php'; su('admin');
/**
title=测试productModel->update();
cid=1
pid=1
测试更新产品名称 >> name,正常产品2,john
测试更新产品代号 >> code,code2,newcode1
测试更新产品名称和代号 >> name,john,jack;code,newcode1,newcode2
测试不更改产品名称 >> 没有数据更新
测试不更改产品代号 >> 没有数据更新
测试同一项目集下产品名称不能重复 >> 『产品名称』已经有『jack』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。
测试同一项目集下产品代号不能重复 >> 『产品代号』已经有『newcode2』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。
*/
function updateObject($module, $objectID, $param = array())
{
global $tester;
$objectModel = $tester->loadModel($module);
$object = $objectModel->getById($objectID);
foreach($object as $field => $value)
{
if(in_array($field, array_keys($param)))
{
$_POST[$field] = $param[$field];
}
else
{
$_POST[$field] = $value;
}
}
$change = $objectModel->update($objectID);
if($change == array()) $change = '没有数据更新';
unset($_POST);
if(dao::isError())
{
return dao::getError();
}
else
{
return $change;
}
}
$case1 = array('name' => 'john');
$case2 = array('code' => 'newcode1');
$case3 = array('name' => 'jack', 'code' => 'newcode2');
$case4 = array('name' => 'jack');
$case5 = array('code' => 'newcode2');
$case6 = array('name' => 'jack');
$case7 = array('code' => 'newcode2');
r(updateObject('product', 2, $case1)) && p('0:field,old,new') && e('name,正常产品2,john'); // 测试更新产品名称
r(updateObject('product', 2, $case2)) && p('0:field,old,new') && e('code,code2,newcode1'); // 测试更新产品代号
r(updateObject('product', 2, $case3)) && p('0:field,old,new;1:field,old,new') && e('name,john,jack;code,newcode1,newcode2'); // 测试更新产品名称和代号
r(updateObject('product', 2, $case4)) && p() && e('没有数据更新'); // 测试不更改产品名称
r(updateObject('product', 2, $case5)) && p() && e('没有数据更新'); // 测试不更改产品代号
r(updateObject('product', 13, $case6)) && p('name:0') && e('『产品名称』已经有『jack』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); // 测试同一项目集下产品名称不能重复
r(updateObject('product', 13, $case7)) && p('code:0') && e('『产品代号』已经有『newcode2』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); // 测试同一项目集下产品代号不能重复
system("./ztest init");
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -14,7 +14,7 @@ pid=1
项目集的开始时间为空 >> 『计划开始』不能为空。
项目集的完成时间为空 >> 『计划完成』不能为空。
项目集的计划完成时间大于计划开始时间 >> 『计划完成』应当大于『2022-01-12』。
项目集的完成日期大于父项目集的完成日期 >> 父项目集的开始日期:2022-01-11,开始日期不能小于父项目集的开始日期
项目集的完成日期大于父项目集的完成日期(需要实时更新日期) >> 父项目集的开始日期:2022-01-16,开始日期不能小于父项目集的开始日期
*/
@@ -22,10 +22,10 @@ $program = new Program('admin');
$add_itemset = array('1', '2', '3', '4', '5', '6');
var_dump($program->createData($add_itemset[5]));die;
r($program->createData($add_itemset[0])) && p('name') && e('测试新增项目集一'); // 创建新项目集
r($program->createData($add_itemset[1])) && p('message[name]:0') && e('『项目集名称』不能为空。'); // 项目集名称为空时
r($program->createData($add_itemset[2])) && p('message[begin]:0') && e('『计划开始』不能为空。'); // 项目集的开始时间为空
r($program->createData($add_itemset[3])) && p('message[end]:0') && e('『计划完成』不能为空。'); // 项目集的完成时间为空
r($program->createData($add_itemset[4])) && p('message[end]:0') && e('『计划完成』应当大于『2022-01-12』。'); // 项目集的计划完成时间大于计划开始时间
r($program->createData($add_itemset[5])) && p('message:begin;message:end') && e('父项目集的开始日期:2022-01-11,开始日期不能小于父项目集的开始日期'); // 项目集的完成日期大于父项目集的完成日期
r($program->createData($add_itemset[5])) && p('message:begin;message:end') && e('父项目集的开始日期:2022-01-16,开始日期不能小于父项目集的开始日期'); // 项目集的完成日期大于父项目集的完成日期(需要实时更新日期)
system("./ztest init");
+2 -1
View File
@@ -16,4 +16,5 @@ $Stakeholder = new Program('admin');
$t_Stakeholder = array('1');
r($Stakeholder->createStakeholder($t_Stakeholder[0])) && p('0:account;1:account') && e('dev2;dev1'); // 创建id=1的项目集的干系人dev1,dev2并查看。
r($Stakeholder->createStakeholder($t_Stakeholder[0])) && p('0:account;1:account') && e('dev2;dev1'); // 创建id=1的项目集的干系人dev1,dev2并查看。
system("./ztest init");
+2 -3
View File
@@ -9,7 +9,7 @@ title=测试 programModel::getInvolvedPrograms();
cid=1
pid=1
查看用户admin可以看到的项目和执行id列表 >> 131
查看用户admin可以看到的项目和执行id列表 >> 1
查看用户test2可以看到的项目和执行id列表 >> 1
*/
@@ -18,6 +18,5 @@ $listOfId = new Program('admin');
$t_sulist = array('admin', 'test2');
/* GetInvolvedPrograms($account). */
r($listOfId->getInvolvedPrograms($t_sulist[0])) && p('131') && e('131'); // 查看用户admin可以看到的项目和执行id列表
r($listOfId->getInvolvedPrograms($t_sulist[0])) && p('1') && e('1'); // 查看用户admin可以看到的项目和执行id列表
r($listOfId->getInvolvedPrograms($t_sulist[1])) && p('1') && e('1'); // 查看用户test2可以看到的项目和执行id列表
+11 -49
View File
@@ -9,60 +9,22 @@ title=测试 programModel::getProductPairs();
cid=1
pid=1
根据项目或项目集ID获取关联产品详情 >> 已关闭的正常产品23
根据项目或项目集ID获取关联产品详情 >> 已关闭的正常产品24
获取不存在的项目或项目集 >> Not Found
根据项目或项目集指派情况获取关联产品详情 >> 正常产品1
根据项目或项目集状态获取关联产品详情 >> 多平台产品100
查看ID=1,有指派,所有状态的关联产品数量 >> 10
查看ID=1,有指派,未关闭的关联产品数量 >> 6
根据项目或项目集状态获取关联产品详情 >> 多平台产品90
查看ID=1,有指派,所有状态的关联产品数量 >> 9
查看ID=1,有指派,未关闭的关联产品数量 >> 5
*/
/*
class Tester
{
public function __construct($user)
{
global $tester;
su($user);
$this->program = $tester->loadModel('program');
}
public function getProductPairsByID($programID = 0)
{
$program = $this->program->getByID($programID);
if(empty($program)) return array('message' => 'Not Found');
return $this->program->getProductPairs($programID, 'assign', 'all');
}
public function getProductPairsByMod($mode = 'assign')
{
return $this->program->getProductPairs(1, $mode, 'noclosed');
}
public function getProductPairsByStatus($status = 'all')
{
return $this->program->getProductPairs(1, 'assign', $status);
}
public function getCount($programID = 0, $mode = 'assign', $status = 'all')
{
return count($this->program->getProductPairs($programID, $mode, $status));
}
}
*/
$getItemsets = new Program('admin');
/* GetProductPairs($programID). */
r($getItemsets->getProductPairsByID('1')) && p('23') && e('已关闭的正常产品23'); //根据项目或项目集ID获取关联产品详情
r($getItemsets->getProductPairsByID('1000')) && p('message') && e('Not Found'); //获取不存在的项目或项目集
$t_program = array('1', '1000', 'all', 'all', '1', 'assign', 'all', '1', 'assign', 'noclosed');
/* GetProductPairs('all', $mode, 'noclosed'). */
r($getItemsets->getProductPairsByMod('all')) && p('1') && e('正常产品1'); // 根据项目或项目集指派情况获取关联产品详情
/* GetProductPairs('all', 'assign', $status). */
r($getItemsets->getProductPairsByStatus('all')) && p('100') && e('多平台产品100'); //根据项目或项目集状态获取关联产品详情
/* Count().*/
r($getItemsets->getCount2('1', 'assign', 'all')) && p() && e('10'); //查看ID=1,有指派,所有状态的关联产品数量
r($getItemsets->getCount2('1', 'assign', 'noclosed')) && p() && e('6'); //查看ID=1,有指派,未关闭的关联产品数量
r($getItemsets->getProductPairsByID($t_program[0])) && p('24') && e('已关闭的正常产品24'); //根据项目或项目集ID获取关联产品详情
r($getItemsets->getProductPairsByID($t_program[1])) && p('message') && e('Not Found'); //获取不存在的项目或项目集
r($getItemsets->getProductPairsByMod($t_program[2])) && p('1') && e('正常产品1'); //根据项目或项目集指派情况获取关联产品详情
r($getItemsets->getProductPairsByStatus($t_program[3])) && p('90') && e('多平台产品90'); //根据项目或项目集状态获取关联产品详情
r($getItemsets->getCount2($t_program[4], $t_program[5], $t_program[6])) && p() && e('9'); //查看ID=1,有指派,所有状态的关联产品数量
r($getItemsets->getCount2($t_program[7], $t_program[8], $t_program[9])) && p() && e('5'); //查看ID=1,有指派,未关闭的关联产品数量
+8 -7
View File
@@ -9,18 +9,19 @@ title=测试 programModel::getStakeholders();
cid=1
pid=1
查看项目集2的干系人信息 >> 0
查看项目集2的干系人信息 >> 测试17
根据干系人id倒序排序 >> 1
根据干系人id正序排序 >> 1
查看项目集2的干系人个数 >> 0
查看项目集2的干系人个数 >> 3
*/
$program = new Program('admin');
$t_Stakeholder = array(2, 'id_desc', 'id_asc', 2);
var_dump($program->getByID1($t_Stakeholder[0]));die;
r($program->getByID1($t_Stakeholder[0])) && p() && e('0'); // 查看项目集2的干系人信息
r($program->getByOrder($t_Stakeholder[1])) && p() && e('1'); // 根据干系人id倒序排序
r($program->getByOrder($t_Stakeholder[2])) && p() && e('1'); // 根据干系人id正序排序
r($program->getCount5($t_Stakeholder[3])) && p() && e('0'); // 查看项目集2的干系人个数
//var_dump($program->getByID1($t_Stakeholder[0]));die;
r($program->getByID1($t_Stakeholder[0])) && p('0:realname') && e('测试17'); // 查看项目集2的干系人信息
r($program->getByOrder($t_Stakeholder[1])) && p() && e('1'); // 根据干系人id倒序排序
r($program->getByOrder($t_Stakeholder[2])) && p() && e('1'); // 根据干系人id正序排序
r($program->getCount5($t_Stakeholder[3])) && p() && e('3'); // 查看项目集2的干系人个数
@@ -9,10 +9,14 @@ title=测试 programModel::getStakeholdersByPrograms();
cid=1
pid=1
获取项目集2的干系人名单 >> 0
获取项目集2和项目集3的干系人名单 >> 0
获取项目集2的干系人个数 >> 0
获取项目集2和项目集3的干系人个数 >> 0
获取项目集2的干系人名单 >> user19
获取项目集2的干系人名单 >> user18
获取项目集2的干系人名单 >> user17
获取项目集2和项目集3的干系人名单 >> user19
获取项目集2和项目集3的干系人名单 >> user18
获取项目集2和项目集3的干系人名单... >> user17
获取项目集2的干系人个数 >> 3
获取项目集2和项目集3的干系人个数 >> 6
*/
@@ -20,7 +24,11 @@ $t = new Program('admin');
$Stakeholder = array('2', '2,3', '2', '2,3');
r($t->getByPrograms($Stakeholder[0])) && p() && e('0'); // 获取项目集2的干系人名单
r($t->getByPrograms($Stakeholder[1])) && p() && e('0'); // 获取项目集2和项目集3的干系人名单
r($t->getCount4($Stakeholder[2])) && p() && e('0'); // 获取项目集2的干系人个数
r($t->getCount4($Stakeholder[3])) && p() && e('0'); // 获取项目集2和项目集3的干系人个数
r($t->getByPrograms($Stakeholder[0])) && p('0:account') && e('user19'); // 获取项目集2的干系人名单
r($t->getByPrograms($Stakeholder[0])) && p('1:account') && e('user18'); // 获取项目集2的干系人名单
r($t->getByPrograms($Stakeholder[0])) && p('2:account') && e('user17'); // 获取项目集2的干系人名单
r($t->getByPrograms($Stakeholder[1])) && p('0:account') && e('user19'); // 获取项目集2和项目集3的干系人名单
r($t->getByPrograms($Stakeholder[1])) && p('1:account') && e('user18'); // 获取项目集2和项目集3的干系人名单
r($t->getByPrograms($Stakeholder[1])) && p('2:account') && e('user17'); // 获取项目集2和项目集3的干系人名单...
r($t->getCount4($Stakeholder[2])) && p() && e('3'); // 获取项目集2的干系人个数
r($t->getCount4($Stakeholder[3])) && p() && e('6'); // 获取项目集2和项目集3的干系人个数
+5 -4
View File
@@ -9,8 +9,8 @@ title=测试 programModel::getTeamMemberPairs();
cid=1
pid=1
获取项目集下所有团队成员 >> U:测试89
获取项目集下所有团队成员 >> 181
获取项目集下所有团队成员 >> P:产品经理92
获取项目集下所有团队成员 >> 19
*/
@@ -18,5 +18,6 @@ $program = new Program('admin');
$t_Tnumber = array(1);
r($program->getById2($t_Tnumber[0])) && p('user89') && e('U:测试89'); //获取项目集下所有团队成员
r($program->getCount6($t_Tnumber[0])) && p() && e('181'); // 获取项目集下所有团队成员
//var_dump($program->getById2($t_Tnumber[0]));die;
r($program->getById2($t_Tnumber[0])) && p('pm92') && e('P:产品经理92'); //获取项目集下所有团队成员
r($program->getCount6($t_Tnumber[0])) && p() && e('19'); // 获取项目集下所有团队成员
+5 -3
View File
@@ -11,12 +11,14 @@ title=测试 programModel::getTopByID();
cid=1
pid=1
获取项目集1最上级的项目集id >> Not Found
获取项目集1最上级的项目集id >> 1
获取项目集1000最上级的项目集id >> Not Found
*/
$t = new Program('admin');
$program_id = 1;
$program_id = array(1, 1000);
r($t->getByID3($program_id)) && p('message') && e('Not Found'); // 获取项目集1最上级的项目集id
r($t->getByID3($program_id[0])) && p() && e('1'); //获取项目集1最上级的项目集id
r($t->getByID3($program_id[1])) && p() && e('Not Found'); //获取项目集1000最上级的项目集id
+2 -2
View File
@@ -9,7 +9,7 @@ title=测试 programModel::hasUnfinished();
cid=1
pid=1
获取项目集1下未完成的项目和项目集 >> 88
获取项目集1下未完成的项目和项目集 >> 9
*/
@@ -17,4 +17,4 @@ $program = new Program('admin');
$unFinish = 1;
r($program->getUnfinished($unFinish)) && p() && e('88'); // 获取项目集1下未完成的项目和项目集
r($program->getUnfinished($unFinish)) && p() && e('9'); // 获取项目集1下未完成的项目和项目集
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
#This script is use to rename files
for file in * ;
do mv $file `echo $file | tr 'A-Z' 'a-z'`;
done
+3 -15
View File
@@ -9,22 +9,10 @@ title=测试 programModel::processNode();
cid=1
pid=1
>> 1
*/
/*class Tester
{
public function __construct($user)
{
global $tester;
$program = new Program('admin');
su($user);
$this->program = $tester->loadModel('program');
}
}*/
$t = new Program('admin');
$program = $tester->loadModel('program');
r($program->processNode(1, 0, 1, 1)) && p() && e(''); //
r($program->processNode(1, 0, 1, 1)) && p() && e('1');
+2 -4
View File
@@ -9,8 +9,7 @@ title=测试 programModel::setTreePath();
cid=1
pid=1
查找id=11的项目集的path >> 12,
查找不存在的id=1000的项目集的path >> 0
查找id=12的项目集的path >> ,2,12,
*/
@@ -18,5 +17,4 @@ $program = new Program('admin');
$findId = array(12, 1000);
r($program->setTreePath($findId[0])) && p('path') && e('12,'); // 查找id=11的项目集的path
#r($program->setTreePath($findId[1])) && p('path') && e('0'); // 查找不存在的id=1000的项目集的path
r($program->setTreePath($findId[0])) && p('path') && e(',2,12,'); // 查找id=12的项目集的path
+7 -6
View File
@@ -20,9 +20,10 @@ pid=1
$t = new Program('admin');
r($t->updateProgram(10)) && p('0:new') && e('测试更新项目集十');// 更新id为10的项目集信息
r($t->updateProgram(10, 2)) && p('message[begin]:0') && e('『计划开始』不能为空。');// 当计划开始为空时更新项目集信息
r($t->updateProgram(10, 3)) && p('message[end]:0') && e('『计划完成』不能为空。');// 当计划完成为空时更新项目集信息
r($t->updateProgram(10, 4)) && p('message[end]:0') && e('『计划完成』应当大于『2020-10-10』。');// 当计划完成小于计划开始时
r($t->updateProgram(10, 1)) && p('message[name]:0') && e('『项目集名称』已经有『项目集1』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。');// 项目集名称已经存在时
r($t->updateProgram(10, 5)) && p('message:begin;message:end') && e('父项目集的开始日期:2019-09-09,开始日期不能小于父项目集的开始日期;父项目集的完成日期:2019-09-09,完成日期不能大于父项目集的完成日期');// 项目集开始时间小于父项目集时
r($t->updateProgram(10)) && p('message:end') && e('测试更新项目集十'); // 更新id为10的项目集信息
r($t->updateProgram(10, 2)) && p('message[begin]:0') && e('『计划开始』不能为空。'); //当计划开始为空时更新项目集信息
r($t->updateProgram(10, 3)) && p('message[end]:0') && e('『计划完成』不能为空。'); //当计划完成为空时更新项目集信息
r($t->updateProgram(10, 4)) && p('message[end]:0') && e('『计划完成』应当大于『2020-10-10』。'); //当计划完成小于计划开始时
r($t->updateProgram(10, 1)) && p('message[name]:0') && e('『项目集名称』已经有『项目集1』这条记录了。如果您确定该记录已删除,请到后台-系统-数据-回收站还原。'); //项目集名称已经存在时
r($t->updateProgram(10, 5)) && p('message:begin;message:end') && e('父项目集的开始日期:2019-09-09,开始日期不能小于父项目集的开始日期;父项目集的完成日期:2019-09-09,完成日期不能大于父项目集的完成日期');// 项目集开始时间小于父项目集时
system("./ztest init");
+2 -1
View File
@@ -19,4 +19,5 @@ $project = new Project('admin');
$beginId = array(66, 67);
r($project->checkStatus($beginId[0])) && p() && e('1'); //开始id为66状态不是closed的项目
r($project->checkStatus($beginId[1])) && p() && e('0'); //开始id为67状态是closed的项目
r($project->checkStatus($beginId[1])) && p() && e('0'); //开始id为67状态是closed的项目
system("./ztest init");
+2 -1
View File
@@ -23,4 +23,5 @@ $realEnd1 = array('realEnd' => '2022-03-11');
//var_dump($project->checkStatusOff($closeId[0], $realEnd1));die;
r($project->checkStatusOff($closeId[0], $realEnd1)) && p() && e('1'); //关闭id为20状态不是closed的项目
r($project->checkStatusOff($closeId[1], $realEnd1)) && p() && e('0'); //关闭id为26状态是closed的项目
r($project->checkStatusOff($closeId[2], $realEnd1)) && p() && e('0'); //关闭id为41状态是suspended的项目
r($project->checkStatusOff($closeId[2], $realEnd1)) && p() && e('0'); //关闭id为41状态是suspended的项目
system("./ztest init");
-22
View File
@@ -1,22 +0,0 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/project.class.php';
/**
title=测试 projectModel::checkHasContent;
cid=1
pid=1
*/
$project = new Project('admin');
//var_dump($project->getStatData(13));die;
r($project->getStatData(13)) && p('bugCount') && e(3); //统计id=13的项目bug数量
r($project->getStatData(13)) && p('taskCount') && e(13); //任务数量
r($project->getStatData(13)) && p('waitCount') && e(2); //暂停数量
r($project->getStatData(13)) && p('doingCount') && e(2); //进行的数量
r($project->getStatData(13)) && p('finishedCount') && e(0); //完成的数量
-18
View File
@@ -1,18 +0,0 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/project.class.php';
/**
title=测试 projectModel::getWorkhour;
cid=1
pid=1
*/
$project = new Project('admin');
var_dump($project->getWorkHour(1));die;
+26
View File
@@ -0,0 +1,26 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/project.class.php';
/**
title=测试 projectModel::checkHasContent;
cid=1
pid=1
统计id=13的项目bug数量 >> 3
任务数量 >> 13
暂停数量 >> 2
进行的数量 >> 2
完成的数量 >> 0
*/
$project = new Project('admin');
r($project->getStatData(13)) && p('bugCount') && e('3'); //统计id=13的项目bug数量
r($project->getStatData(13)) && p('taskCount') && e('13'); //任务数量
r($project->getStatData(13)) && p('waitCount') && e('2'); //暂停数量
r($project->getStatData(13)) && p('doingCount') && e('2'); //进行的数量
r($project->getStatData(13)) && p('finishedCount') && e('0'); //完成的数量
@@ -9,7 +9,7 @@ title=测试 projectModel::getTeamMembers();
cid=1
pid=1
获取id为11的项目团队成员个数 >> 0
获取id为11的项目团队成员个数 >> 2
获取id为11的项目团队成员个数,开启新手引导 >> 1
*/
@@ -19,4 +19,4 @@ $project = new Project('admin');
$getNu = array(11, array('admin', 'pm92'), 11, array('admin'), true);
r($project->getTeamMembers($getNu[0], $getNu[1])) && p() && e('2'); //获取id为11的项目团队成员个数
r($project->getTeamMembers($getNu[2], $getNu[3], $getNu[4])) && p() && e('1'); //获取id为11的项目团队成员个数,开启新手引导
r($project->getTeamMembers($getNu[2], $getNu[3], $getNu[4])) && p() && e('1'); //获取id为11的项目团队成员个数,开启新手引导
@@ -9,8 +9,10 @@ title=测试 projectModel::getTotalStoriesByProject;
cid=1
pid=1
*/
$project = new Project('admin');
var_dump($project->getTotalStoriesByProject());die;
var_dump($project->getTotalStoriesByProject());die;
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/project.class.php';
/**
title=测试 projectModel::getWorkhour;
cid=1
pid=1
预计61.0小时 >> 61.0
消耗95.0小时 >> 95.0
*/
$project = new Project('admin');
r($project->getWorkHour(13)) && p('totalEstimate') && e('61.0'); //预计61.0小时
r($project->getWorkHour(13)) && p('totalConsumed') && e('95.0'); //消耗95.0小时
r($project->getWorkHour(1000)) && p('totalEstimate') && e(''); //测试不存在的项目
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
#This script is use to rename files
for file in * ;
do mv $file `echo $file | tr 'A-Z' 'a-z'`;
done
-15
View File
@@ -1,15 +0,0 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
/**
title=测试 programModel::saveState;
cid=1
pid=1
*/
$project = $tester->loadModel('project');
+22
View File
@@ -0,0 +1,22 @@
#!/usr/bin/env php
<?php
include dirname(dirname(dirname(__FILE__))) . '/lib/init.php';
include dirname(dirname(dirname(__FILE__))) . '/class/project.class.php';
/**
title=测试 programModel::saveState;
cid=1
pid=1
传入存在ID的值14,保存session,返回对应值14 >> 14
传入存在ID的值99,保存session,返回第一位默认值11 >> 11
*/
$project = new Project('dev1');
$projectId = array(14, 99);
r($project->saveState($projectId[0])) && p() && e('14'); //传入存在ID的值14,保存session,返回对应值14
r($project->saveState($projectId[1])) && p() && e('11'); //传入存在ID的值99,保存session,返回第一位默认值11
+2 -1
View File
@@ -23,4 +23,5 @@ $statusId = array(81, 83, 82, 85);
r($project->checkStatusBegin($statusId[0])) && p() && e('1'); // 开始id为81状态是suspended的项目(代码缺失elBegan参数,报警告)
r($project->checkStatusBegin($statusId[1])) && p() && e('1'); // 开始id为83状态是wait的项目
r($project->checkStatusBegin($statusId[2])) && p() && e('0'); // 开始id为82状态是closed的项目
r($project->checkStatusBegin($statusId[3])) && p() && e('0'); // 开始id为85状态是doing的项目
r($project->checkStatusBegin($statusId[3])) && p() && e('0'); // 开始id为85状态是doing的项目
system("./ztest init");
+2 -32
View File
@@ -14,40 +14,10 @@ pid=1
暂停id为74状态是closed的项目 >> 0
*/
/*
class Tester
{
public function __construct($user)
{
global $tester;
su($user);
$this->project = $tester->loadModel('project');
}
/**
* Check project status after suspend a project.
*
* @param int $projectID
* @access public
* @return bool
*
public function checkStatus($projectID)
{
$oldProject = $this->project->getById($projectID);
if($oldProject->status == 'suspended' or $oldProject->status == 'closed') return false;
$change = $this->project->suspend($projectID);
$project = $this->project->getById($projectID);
if($project->status != 'suspended') return false;
return true;
}
}*/
$t = new Project('admin');
r($t->checkStatusStop(56)) && p() && e('1'); // 暂停id为56状态是doing的项目
r($t->checkStatusStop(73)) && p() && e('0'); // 暂停id为73状态是suspended的项目
r($t->checkStatusStop(74)) && p() && e('0'); // 暂停id为74状态是closed的项目
r($t->checkStatusStop(74)) && p() && e('0'); // 暂停id为74状态是closed的项目
system("./ztest init");
BIN
View File
Binary file not shown.