diff --git a/module/release/control.php b/module/release/control.php index 3f8297186f..6446cbfdd1 100644 --- a/module/release/control.php +++ b/module/release/control.php @@ -86,27 +86,6 @@ class release extends control $releasedBuilds = $this->release->getReleasedBuilds($productID, $branch); foreach($releasedBuilds as $build) unset($builds[$build]); - /* Get the builds of the linked stories or bugs. */ - $notEmptyBuilds = array(); - $buildList = $this->build->getByList(array_keys($builds)); - foreach($buildList as $build) - { - if(!$build->execution && !empty($build->builds)) - { - $childBuilds = $this->build->getByList($build->builds); - foreach($childBuilds as $childBuild) - { - $childBuild->stories = trim($childBuild->stories, ','); - $childBuild->bugs = trim($childBuild->bugs, ','); - - if($childBuild->stories) $build->stories .= ',' . $childBuild->stories; - if($childBuild->bugs) $build->bugs .= ',' . $childBuild->bugs; - } - } - - if(!empty($build->stories) or !empty($build->bugs)) $notEmptyBuilds[$build->id] = $build->id; - } - $this->commonAction($productID, $branch); $this->view->title = $this->view->product->name . $this->lang->colon . $this->lang->release->create; $this->view->position[] = $this->lang->release->create; @@ -114,7 +93,7 @@ class release extends control $this->view->builds = $builds; $this->view->users = $this->loadModel('user')->getPairs('noclosed'); $this->view->lastRelease = $this->release->getLast($productID, $branch); - $this->view->notEmptyBuilds = $notEmptyBuilds; + $this->view->notEmptyBuilds = $this->build->getNotEmptyBuilds(array_keys($builds)); $this->display(); } diff --git a/module/release/js/create.js b/module/release/js/create.js index 1b64abc7c2..87a9d72468 100644 --- a/module/release/js/create.js +++ b/module/release/js/create.js @@ -21,5 +21,3 @@ $('#submit').click(function() $('#sync').val(result); } }); - -$('[data-toggle="popover"]').popover(); diff --git a/test/class/build.class.php b/test/class/build.class.php index a51cd8ba1f..e3ce509607 100644 --- a/test/class/build.class.php +++ b/test/class/build.class.php @@ -149,6 +149,20 @@ class buildTest return $objects; } + /** + * Test for getNotEmptyBuilds method + * + * @param array $buildIdList + * @access public + * @return string + */ + public function getNotEmptyBuildsTest($buildIdList) + { + $notEmptyBuilds = $this->objectModel->getNotEmptyBuilds($buildIdList); + sort($notEmptyBuilds); + return empty($notEmptyBuilds) ? 'null' : join(',', $notEmptyBuilds); + } + /** * Function getLast test by build * diff --git a/test/model/build/getnotemptybuilds.php b/test/model/build/getnotemptybuilds.php new file mode 100644 index 0000000000..f868343e7c --- /dev/null +++ b/test/model/build/getnotemptybuilds.php @@ -0,0 +1,70 @@ +#!/usr/bin/env php +getNotEmptyBuilds(); +cid=1 +pid=1 + +不传任何数据 >> null +迭代版本未关联需求和Bug >> null +迭代版本关联需求和Bug >> 101 +项目版本关联版本关联需求和Bug >> 102 +项目版本关联版本未关联需求和Bug >> null +版本列表中关联需求和Bug >> 101 +版本列表中混合项目版本和迭代版本 >> 101,102 + +*/ + +$build = new buildTest(); + +$buildData = new stdclass(); +$buildData->id = 100; +$buildData->product = 1; +$buildData->project = 1; +$buildData->execution = 2; +$buildData->name = 'test1'; +$buildData->date = date('Y-m-d'); +$build->objectModel->dao->replace(TABLE_BUILD)->data($buildData)->exec(); +$buildId1 = $buildData->id; + +$buildData->id = 101; +$buildData->name = 'test2'; +$buildData->stories = '1,2,3'; +$build->objectModel->dao->replace(TABLE_BUILD)->data($buildData)->exec(); +$buildId2 = $buildData->id; + +$buildData = new stdclass(); +$buildData->id = 102; +$buildData->product = 1; +$buildData->project = 1; +$buildData->execution = 0; +$buildData->builds = ",$buildId2,"; +$buildData->name = 'test3'; +$buildData->date = date('Y-m-d'); +$build->objectModel->dao->replace(TABLE_BUILD)->data($buildData)->exec(); +$buildId3 = $buildData->id; + +$buildData = new stdclass(); +$buildData->id = 103; +$buildData->product = 1; +$buildData->project = 1; +$buildData->execution = 0; +$buildData->builds = ",$buildId1,"; +$buildData->name = 'test4'; +$buildData->date = date('Y-m-d'); +$build->objectModel->dao->replace(TABLE_BUILD)->data($buildData)->exec(); +$buildId4 = $buildData->id; + + +r($build->getNotEmptyBuildsTest(array())) && p() && e('null'); //不传任何数据 +r($build->getNotEmptyBuildsTest(array($buildId1))) && p() && e('null'); //迭代版本未关联需求和Bug +r($build->getNotEmptyBuildsTest(array($buildId2))) && p() && e('101'); //迭代版本关联需求和Bug +r($build->getNotEmptyBuildsTest(array($buildId3))) && p() && e('102'); //项目版本关联版本关联需求和Bug +r($build->getNotEmptyBuildsTest(array($buildId4))) && p() && e('null'); //项目版本关联版本未关联需求和Bug +r($build->getNotEmptyBuildsTest(array($buildId1, $buildId2))) && p() && e('101'); //版本列表中关联需求和Bug +r($build->getNotEmptyBuildsTest(array($buildId3, $buildId2))) && p() && e('101,102'); //版本列表中混合项目版本和迭代版本