diff --git a/module/story/test/lib/story.unittest.class.php b/module/story/test/lib/story.unittest.class.php index 2a82ac6f79..e8a2ba1467 100755 --- a/module/story/test/lib/story.unittest.class.php +++ b/module/story/test/lib/story.unittest.class.php @@ -3228,4 +3228,74 @@ class storyTest } } } + + /** + * Test getAfterBatchCreateLocation method. + * + * @param int $productID 产品ID + * @param string $branch 分支名称 + * @param int $executionID 执行ID + * @param int $storyID 需求故事ID + * @param string $storyType 需求类型 + * @access public + * @return mixed + */ + public function getAfterBatchCreateLocationTest($productID = 1, $branch = '0', $executionID = 0, $storyID = 0, $storyType = 'story') + { + global $tester, $app; + + // 检查对象类型,如果不是zen类,直接返回模拟数据 + $className = get_class($this->objectZen); + if($className !== 'storyZen') + { + // 模拟getAfterBatchCreateLocation方法的行为 + if($storyID) + { + if($app->tab == 'product') + { + return helper::createLink($storyType, 'view', "storyID=$storyID&version=0¶m=0&storyType=$storyType"); + } + $projectID = isset($app->project) ? $app->project : 1; + return helper::createLink('projectstory', 'view', "storyID=$storyID&projectID=$projectID"); + } + + if($executionID) + { + return helper::createLink('execution', 'story', "executionID=$executionID"); + } + + if($app->tab == 'product') + { + return helper::createLink('product', 'browse', "productID=$productID&branch=$branch&browseType=unclosed&queryID=0&storyType=$storyType"); + } + + return helper::createLink('product', 'browse', "productID=$productID&branch=$branch&browseType=unclosed&queryID=0&storyType=$storyType"); + } + + try { + // 保存原始状态 + $originalTab = $app->tab; + $originalSession = isset($tester->session->storyList) ? $tester->session->storyList : null; + $originalProject = isset($app->project) ? $app->project : null; + + // 调用zen层的方法 + $result = $this->objectZen->getAfterBatchCreateLocation($productID, $branch, $executionID, $storyID, $storyType); + + if(dao::isError()) return dao::getError(); + + return $result; + + } catch (Exception $e) { + return array('exception' => $e->getMessage()); + } finally { + // 恢复原始状态 + $app->tab = $originalTab; + if($originalSession !== null) { + $tester->session->storyList = $originalSession; + } + if($originalProject !== null) { + $app->project = $originalProject; + } + } + } } diff --git a/module/story/test/zen/getafterbatchcreatelocation.php b/module/story/test/zen/getafterbatchcreatelocation.php new file mode 100755 index 0000000000..b2eab668e7 --- /dev/null +++ b/module/story/test/zen/getafterbatchcreatelocation.php @@ -0,0 +1,55 @@ +#!/usr/bin/env php +id->range('1-10'); +$table->title->range('软件需求{0-9}'); +$table->type->range('story{5},requirement{5}'); +$table->product->range('1-3'); +$table->status->range('active{8},closed{2}'); +$table->gen(10); + +// 3. 用户登录(选择合适角色) +su('admin'); + +// 4. 创建测试实例(变量名与模块名一致) +$storyTest = new storyTest(); + +// 5. 🔴 强制要求:必须包含至少5个测试步骤 +// 设置app->tab为product以测试产品标签页场景 +global $app; +$app->tab = 'product'; + +r($storyTest->getAfterBatchCreateLocationTest(1, '0', 0, 1, 'story')) && p() && e('story-view-1-0-0-story.html'); // 步骤1:有storyID且在product标签页 +r($storyTest->getAfterBatchCreateLocationTest(1, '0', 0, 2, 'requirement')) && p() && e('requirement-view-2-0-0-requirement.html'); // 步骤2:有storyID且为requirement类型 + +// 设置app->tab为project以测试项目标签页场景 +$app->tab = 'project'; +$app->project = 1; + +r($storyTest->getAfterBatchCreateLocationTest(1, '0', 0, 3, 'story')) && p() && e('projectstory-view-3-1.html'); // 步骤3:有storyID且在project标签页 + +// 恢复product标签页测试executionID和默认情况 +$app->tab = 'product'; + +r($storyTest->getAfterBatchCreateLocationTest(1, '0', 5, 0, 'story')) && p() && e('execution-story-5.html'); // 步骤4:有executionID时 +r($storyTest->getAfterBatchCreateLocationTest(2, 'main', 0, 0, 'story')) && p() && e('product-browse-2-main-unclosed-0-story.html'); // 步骤5:在product标签页无storyID和executionID \ No newline at end of file