+ [misc] Add unit tests for bugZen::buildCreateForm() method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-11-12 08:25:35 +08:00
co-authored by Claude
parent 2591098f39
commit 992cafbd78
2 changed files with 152 additions and 0 deletions
+47
View File
@@ -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,
);
}
}
+105
View File
@@ -0,0 +1,105 @@
#!/usr/bin/env php
<?php
/**
title=测试 bugZen::buildCreateForm();
timeout=0
cid=0
- 步骤1:正常情况下验证产品成员数量属性productMembers @11
- 步骤2:from='global'的情况属性gobackLink @buildcreateform.php?m=bug&f=browse&productID=1
- 步骤3:有resultID和stepIdList的情况属性resultFilesCount @0
- 步骤4:验证产品和项目数据
- 属性productsCount @5
- 属性projectsCount @0
- 步骤5:验证执行和构建数据
- 属性executionsCount @0
- 属性buildsCount @2
- 步骤6:验证模块和分支数据
- 属性moduleOptionMenuCount @4
- 属性branchesCount @1
- 步骤7:验证计划和用例数据
- 属性plansCount @3
- 属性casesCount @4
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/zen.class.php';
zenData('product')->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:验证计划和用例数据