diff --git a/module/bug/test/lib/zen.class.php b/module/bug/test/lib/zen.class.php index c505db974a..9181d02e1d 100644 --- a/module/bug/test/lib/zen.class.php +++ b/module/bug/test/lib/zen.class.php @@ -370,4 +370,51 @@ class bugZenTest extends baseTest return $output; } + + /** + * Test buildCreateForm method. + * + * @param object $bug + * @param array $param + * @param string $from + * @access public + * @return array + */ + public function buildCreateFormTest(object $bug, array $param = array(), string $from = ''): array + { + $instance = $this->getInstance($this->moduleName, $this->className); + + /* Initialize view users to avoid undefined property error. */ + if(!isset($instance->view->users)) + { + $instance->view->users = $instance->loadModel('user')->getPairs('noletter'); + } + + try + { + $this->invokeArgs('buildCreateForm', [$bug, $param, $from]); + } + catch(Throwable $e) + { + return array('error' => $e->getMessage()); + } + + if(dao::isError()) return array('error' => dao::getError()); + + return array( + 'title' => $instance->view->title ?? '', + 'productMembers' => !empty($instance->view->productMembers) ? count($instance->view->productMembers) : 0, + 'gobackLink' => $instance->view->gobackLink ?? '', + 'productName' => $instance->view->productName ?? '', + 'productsCount' => !empty($instance->view->products) ? count($instance->view->products) : 0, + 'projectsCount' => !empty($instance->view->projects) ? count($instance->view->projects) : 0, + 'executionsCount' => !empty($instance->view->executions) ? count($instance->view->executions) : 0, + 'branchesCount' => !empty($instance->view->branches) ? count($instance->view->branches) : 0, + 'buildsCount' => !empty($instance->view->builds) ? count($instance->view->builds) : 0, + 'moduleOptionMenuCount' => !empty($instance->view->moduleOptionMenu) ? count($instance->view->moduleOptionMenu) : 0, + 'resultFilesCount' => !empty($instance->view->resultFiles) ? count($instance->view->resultFiles) : 0, + 'plansCount' => !empty($instance->view->plans) ? count($instance->view->plans) : 0, + 'casesCount' => !empty($instance->view->cases) ? count($instance->view->cases) : 0, + ); + } } diff --git a/module/bug/test/zen/buildcreateform.php b/module/bug/test/zen/buildcreateform.php new file mode 100755 index 0000000000..32643c8c59 --- /dev/null +++ b/module/bug/test/zen/buildcreateform.php @@ -0,0 +1,105 @@ +#!/usr/bin/env php +gen(5); +zenData('project')->gen(5); +zenData('bug')->gen(10); +zenData('build')->gen(5); +zenData('story')->gen(5); +zenData('task')->gen(5); +zenData('case')->gen(5); +zenData('user')->gen(10); +zenData('module')->gen(5); +zenData('branch')->gen(3); +zenData('productplan')->gen(5); + +su('admin'); + +$bugTest = new bugZenTest(); + +$bug1 = (object)array( + 'id' => 0, + 'productID' => 1, + 'product' => 1, + 'branch' => '0', + 'project' => 1, + 'projectID' => 1, + 'execution' => 1, + 'executionID' => 1, + 'module' => 0, + 'moduleID' => 0, + 'assignedTo' => 'admin', + 'openedBy' => 'admin', + 'status' => 'active' +); + +$bug2 = (object)array( + 'id' => 0, + 'productID' => 2, + 'product' => 2, + 'branch' => '0', + 'project' => 2, + 'projectID' => 2, + 'execution' => 2, + 'executionID' => 2, + 'module' => 0, + 'moduleID' => 0, + 'assignedTo' => 'user1', + 'openedBy' => 'admin', + 'status' => 'active' +); + +$bug3 = (object)array( + 'id' => 0, + 'productID' => 1, + 'product' => 1, + 'branch' => '1', + 'project' => 1, + 'projectID' => 1, + 'execution' => 1, + 'executionID' => 1, + 'module' => 1, + 'moduleID' => 1, + 'assignedTo' => 'admin', + 'openedBy' => 'admin', + 'status' => 'active' +); + +$param1 = array('resultID' => 0, 'stepIdList' => '', 'executionID' => 1, 'bugID' => 0); +$param2 = array('resultID' => 1, 'stepIdList' => '1_2_3', 'executionID' => 2, 'bugID' => 0); +$param3 = array('resultID' => 0, 'stepIdList' => '', 'executionID' => 1, 'bugID' => 0); + +r($bugTest->buildCreateFormTest($bug1, $param1, '')) && p('productMembers') && e('11'); // 步骤1:正常情况下验证产品成员数量 +r($bugTest->buildCreateFormTest($bug1, $param1, 'global')) && p('gobackLink') && e('buildcreateform.php?m=bug&f=browse&productID=1'); // 步骤2:from='global'的情况 +r($bugTest->buildCreateFormTest($bug2, $param2, '')) && p('resultFilesCount') && e('0'); // 步骤3:有resultID和stepIdList的情况 +r($bugTest->buildCreateFormTest($bug1, $param1, '')) && p('productsCount,projectsCount') && e('5,0'); // 步骤4:验证产品和项目数据 +r($bugTest->buildCreateFormTest($bug1, $param1, '')) && p('executionsCount,buildsCount') && e('0,2'); // 步骤5:验证执行和构建数据 +r($bugTest->buildCreateFormTest($bug3, $param3, '')) && p('moduleOptionMenuCount,branchesCount') && e('4,1'); // 步骤6:验证模块和分支数据 +r($bugTest->buildCreateFormTest($bug1, $param1, '')) && p('plansCount,casesCount') && e('3,4'); // 步骤7:验证计划和用例数据 \ No newline at end of file