diff --git a/module/bug/test/lib/bug.unittest.class.php b/module/bug/test/lib/bug.unittest.class.php index 9b8fc835dd..0dfc960dae 100644 --- a/module/bug/test/lib/bug.unittest.class.php +++ b/module/bug/test/lib/bug.unittest.class.php @@ -1626,4 +1626,20 @@ class bugTest return $result; } + /** + * Test checkBugsForBatchUpdate method. + * + * @param array $bugs + * @access public + * @return bool + */ + public function checkBugsForBatchUpdateTest(array $bugs): bool + { + $result = $this->objectZen->checkBugsForBatchUpdate($bugs); + + if(dao::isError()) return dao::getError(); + + return $result; + } + } diff --git a/module/bug/test/zen/checkbugsforbatchupdate.php b/module/bug/test/zen/checkbugsforbatchupdate.php new file mode 100755 index 0000000000..bd57caf58e --- /dev/null +++ b/module/bug/test/zen/checkbugsforbatchupdate.php @@ -0,0 +1,101 @@ +#!/usr/bin/env php +rawModule = 'bug'; +$app->rawMethod = 'batchedit'; + +$zen = initReference('bug'); +$func = $zen->getMethod('checkBugsForBatchUpdate'); + +// 测试步骤1:有效的bug数据批量更新验证 +dao::$errors = array(); +$validBugs = array(); +$validBug1 = new stdClass(); +$validBug1->id = 1; +$validBug1->title = 'Valid Bug Title 1'; +$validBug1->openedBuild = 'trunk'; +$validBug1->severity = 3; +$validBug1->pri = 3; +$validBugs[] = $validBug1; + +$validBug2 = new stdClass(); +$validBug2->id = 2; +$validBug2->title = 'Valid Bug Title 2'; +$validBug2->openedBuild = 'trunk'; +$validBug2->severity = 2; +$validBug2->pri = 2; +$validBugs[] = $validBug2; + +$result = $func->invokeArgs($zen->newInstance(), [$validBugs]); +r($result) && p() && e('1'); + +// 测试步骤2:缺少必填字段title的bug数据验证 +dao::$errors = array(); +$invalidBugsNoTitle = array(); +$invalidBug1 = new stdClass(); +$invalidBug1->id = 3; +$invalidBug1->title = ''; +$invalidBug1->openedBuild = 'trunk'; +$invalidBugsNoTitle[] = $invalidBug1; + +$result = $func->invokeArgs($zen->newInstance(), [$invalidBugsNoTitle]); +r($result) && p() && e('0'); + +// 测试步骤3:缺少必填字段openedBuild的bug数据验证 +dao::$errors = array(); +$invalidBugsNoBuild = array(); +$invalidBug2 = new stdClass(); +$invalidBug2->id = 4; +$invalidBug2->title = 'Bug without build'; +$invalidBug2->openedBuild = ''; +$invalidBugsNoBuild[] = $invalidBug2; + +$result = $func->invokeArgs($zen->newInstance(), [$invalidBugsNoBuild]); +r($result) && p() && e('0'); + +// 测试步骤4:resolvedBy有值但resolution为空的验证 +dao::$errors = array(); +$invalidBugsResolvedBy = array(); +$invalidBug3 = new stdClass(); +$invalidBug3->id = 5; +$invalidBug3->title = 'Bug with resolvedBy but no resolution'; +$invalidBug3->openedBuild = 'trunk'; +$invalidBug3->resolvedBy = 'admin'; +$invalidBug3->resolution = ''; +$invalidBugsResolvedBy[] = $invalidBug3; + +$result = $func->invokeArgs($zen->newInstance(), [$invalidBugsResolvedBy]); +r($result) && p() && e('0'); + +// 测试步骤5:resolution为duplicate但duplicateBug为空的验证 +dao::$errors = array(); +$invalidBugsDuplicate = array(); +$invalidBug4 = new stdClass(); +$invalidBug4->id = 6; +$invalidBug4->title = 'Duplicate bug without duplicateBug ID'; +$invalidBug4->openedBuild = 'trunk'; +$invalidBug4->resolution = 'duplicate'; +$invalidBug4->duplicateBug = ''; +$invalidBugsDuplicate[] = $invalidBug4; + +$result = $func->invokeArgs($zen->newInstance(), [$invalidBugsDuplicate]); +r($result) && p() && e('0'); \ No newline at end of file