Merge branch dev/bug-65004-65021-65022-65055 of zentao/zentaopms (#11235)
This commit is contained in:
@@ -108,7 +108,7 @@ class release extends control
|
||||
$this->view->showBranch = $showBranch;
|
||||
$this->view->branchPairs = $this->loadModel('branch')->getPairs($productID);
|
||||
$this->view->appList = $this->loadModel('system')->getPairs();
|
||||
$this->view->childReleases = $this->release->getListByCondition(explode(',', $children), 0, true);
|
||||
$this->view->childReleases = $childReleases;
|
||||
$this->view->from = $from;
|
||||
$this->view->blockID = $blockID;
|
||||
$this->view->idList = '';
|
||||
|
||||
@@ -71,6 +71,8 @@ window.deleteItem = function(obj)
|
||||
if(trLen <= appLength) $('#systemForm tbody tr .actions-list .add-item').removeClass('hidden');
|
||||
|
||||
setTimeout(window.initAppPicker, 100);
|
||||
|
||||
itemIndex --;
|
||||
};
|
||||
|
||||
$(function()
|
||||
|
||||
+47
-28
@@ -121,7 +121,8 @@ class releaseModel extends model
|
||||
foreach(explode(',', $release->build) as $buildID)
|
||||
{
|
||||
if(!$buildID || !isset($builds[$buildID])) continue;
|
||||
$releaseBuilds[] = $builds[$buildID];
|
||||
$builds[$buildID]->projectName = zget($projectPairs, $builds[$buildID]->project, '');
|
||||
$releaseBuilds[$buildID] = $builds[$buildID];
|
||||
}
|
||||
$release->builds = $releaseBuilds;
|
||||
|
||||
@@ -1386,7 +1387,7 @@ class releaseModel extends model
|
||||
*
|
||||
* @param array $releaseList
|
||||
* @param array $childReleases
|
||||
* @param int $addActionsAndBuildLink
|
||||
* @param bool $addActionsAndBuildLink
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
@@ -1403,30 +1404,7 @@ class releaseModel extends model
|
||||
$release->rowspan = $buildCount;
|
||||
if($addActionsAndBuildLink) $release->actions = $this->buildActionList($release);
|
||||
|
||||
if(!empty($release->builds))
|
||||
{
|
||||
foreach($release->builds as $build)
|
||||
{
|
||||
$releaseInfo = clone $release;
|
||||
|
||||
if($addActionsAndBuildLink)
|
||||
{
|
||||
$moduleName = $build->execution ? 'build' : 'projectbuild';
|
||||
$canClickable = false;
|
||||
if($moduleName == 'projectbuild' && $this->project->checkPriv((int)$build->project)) $canClickable = true;
|
||||
if($moduleName == 'build' && $this->execution->checkPriv((int)$build->execution)) $canClickable = true;
|
||||
$build->link = $canClickable ? helper::createLink($moduleName, 'view', "buildID={$build->id}") : '';
|
||||
}
|
||||
|
||||
$releaseInfo->build = $build;
|
||||
|
||||
$releases[] = $releaseInfo;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$releases[] = $release;
|
||||
}
|
||||
$releases = array_merge($releases, $this->processReleaseBuilds($release, $addActionsAndBuildLink));
|
||||
|
||||
if(empty($release->releases)) continue;
|
||||
|
||||
@@ -1436,14 +1414,55 @@ class releaseModel extends model
|
||||
{
|
||||
$child = clone $childReleases[$childID];
|
||||
$child = current($this->processReleaseListData(array($child)));
|
||||
|
||||
$child->rowID = "{$release->id}-{$childID}";
|
||||
$child->parent = $release->id;
|
||||
$releases[$child->rowID] = $child;
|
||||
$releases = array_merge($releases, $this->processReleaseBuilds($child, $addActionsAndBuildLink));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $releases;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理发布构建信息。
|
||||
* Process release builds.
|
||||
*
|
||||
* @param object $release
|
||||
* @param bool $addActionsAndBuildLink
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function processReleaseBuilds(object $release, bool $addActionsAndBuildLink): array
|
||||
{
|
||||
$releases = array();
|
||||
|
||||
if(!empty($release->builds))
|
||||
{
|
||||
foreach($release->builds as $build)
|
||||
{
|
||||
$releaseInfo = clone $release;
|
||||
|
||||
if($addActionsAndBuildLink)
|
||||
{
|
||||
$moduleName = $build->execution ? 'build' : 'projectbuild';
|
||||
$canClickable = false;
|
||||
if($moduleName == 'projectbuild' && $this->project->checkPriv((int)$build->project)) $canClickable = true;
|
||||
if($moduleName == 'build' && $this->execution->checkPriv((int)$build->execution)) $canClickable = true;
|
||||
$build->link = $canClickable ? helper::createLink($moduleName, 'view', "buildID={$build->id}") : '';
|
||||
}
|
||||
|
||||
$releaseInfo->build = $build;
|
||||
$releaseInfo->projectName = $build->projectName;
|
||||
|
||||
$releases[] = $releaseInfo;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$releases[] = $release;
|
||||
}
|
||||
|
||||
return $releases;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -347,4 +347,36 @@ class releaseTest
|
||||
|
||||
return $this->objectModel->dao->select('*')->from(TABLE_STORY)->where('id')->eq($storyID)->fetch();
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理发布列表数据测试。
|
||||
* Process release list data test.
|
||||
*
|
||||
* @param int $productID
|
||||
* @param string $type
|
||||
* @param array $childReleases
|
||||
* @param bool $addActionsAndBuildLink
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function processReleaseListDataTest(int $productID, string $type = 'all', array $childReleases = array(), bool $addActionsAndBuildLink = true)
|
||||
{
|
||||
$releases = $this->objectModel->getList($productID, 0, $type);
|
||||
return $this->objectModel->processReleaseListData($releases, $childReleases, $addActionsAndBuildLink);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理发布版本数据测试。
|
||||
* Process release build data test.
|
||||
*
|
||||
* @param int $releaseID
|
||||
* @param bool $addActionsAndBuildLink
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
public function processReleaseBuildsTest(int $releaseID, bool $addActionsAndBuildLink = true): array
|
||||
{
|
||||
$release = $this->objectModel->getByID($releaseID);
|
||||
return $this->objectModel->processReleaseBuilds($release, $addActionsAndBuildLink);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
|
||||
title=测试 releaseModel->processReleaseForCreate();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
- 测试同步版本数据并处理空的数据
|
||||
- 第0条的name属性 @发布1
|
||||
- 第0条的project属性 @131
|
||||
- 测试同步版本数据并处理空的数据
|
||||
- 第0条的name属性 @发布2
|
||||
- 第0条的project属性 @131
|
||||
- 测试同步版本数据并处理空的数据
|
||||
- 第0条的name属性 @发布3
|
||||
- 第0条的project属性 @131
|
||||
- 测试同步版本数据并处理空的数据第0条的build属性 @~~
|
||||
*/
|
||||
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/release.unittest.class.php';
|
||||
|
||||
$build = zenData('build')->loadYaml('build');
|
||||
$build->project->range('1{2},0{3}');
|
||||
$build->execution->range('0,101,0{3}');
|
||||
$build->gen(5);
|
||||
|
||||
zenData('release')->loadYaml('release')->gen(5);
|
||||
zenData('product')->gen(5);
|
||||
su('admin');
|
||||
|
||||
$releaseTester = new releaseTest();
|
||||
r($releaseTester->processReleaseBuildsTest(1)) && p('0:name,project') && e('发布1,131'); // 测试同步版本数据并处理空的数据
|
||||
r($releaseTester->processReleaseBuildsTest(2)) && p('0:name,project') && e('发布2,131'); // 测试同步版本数据并处理空的数据
|
||||
r($releaseTester->processReleaseBuildsTest(3)) && p('0:name,project') && e('发布3,131'); // 测试同步版本数据并处理空的数据
|
||||
r($releaseTester->processReleaseBuildsTest(2, false)) && p('0:build') && e('~~'); // 测试同步版本数据并处理空的数据
|
||||
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
|
||||
title=测试 releaseModel->processReleaseForCreate();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
- 测试同步版本数据并处理空的数据
|
||||
- 第0条的name属性 @发布3
|
||||
- 第0条的project属性 @131
|
||||
- 测试同步版本数据并处理空的数据
|
||||
- 第1条的name属性 @发布4
|
||||
- 第1条的project属性 @131
|
||||
- 测试同步版本数据并处理空的数据 @0
|
||||
- 测试同步版本数据并处理空的数据第0条的build属性 @~~
|
||||
*/
|
||||
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/release.unittest.class.php';
|
||||
|
||||
$build = zenData('build')->loadYaml('build');
|
||||
$build->project->range('1{2},0{3}');
|
||||
$build->execution->range('0,101,0{3}');
|
||||
$build->gen(5);
|
||||
|
||||
zenData('release')->loadYaml('release')->gen(5);
|
||||
zenData('product')->gen(5);
|
||||
su('admin');
|
||||
|
||||
$releaseTester = new releaseTest();
|
||||
r($releaseTester->processReleaseListDataTest(1)) && p('0:name,project') && e('发布3,131'); // 测试同步版本数据并处理空的数据
|
||||
r($releaseTester->processReleaseListDataTest(2)) && p('1:name,project') && e('发布4,131'); // 测试同步版本数据并处理空的数据
|
||||
r($releaseTester->processReleaseListDataTest(3)) && p() && e('0'); // 测试同步版本数据并处理空的数据
|
||||
r($releaseTester->processReleaseListDataTest(2, 'all', array(), false)) && p('0:build') && e('~~'); // 测试同步版本数据并处理空的数据
|
||||
Reference in New Issue
Block a user