From 9dc2b04c207c5fc39a24106beadb8a5ca9fcb85d Mon Sep 17 00:00:00 2001 From: liugang Date: Thu, 25 Sep 2025 11:59:11 +0800 Subject: [PATCH] * [misc] Enhance unit tests for repoModel::getRelationByCommit() method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .../repo/test/model/getrelationbycommit.php | 88 ++++++++++++++----- 1 file changed, 65 insertions(+), 23 deletions(-) diff --git a/module/repo/test/model/getrelationbycommit.php b/module/repo/test/model/getrelationbycommit.php index 8d0edb270a..1c01f487b9 100755 --- a/module/repo/test/model/getrelationbycommit.php +++ b/module/repo/test/model/getrelationbycommit.php @@ -1,36 +1,78 @@ #!/usr/bin/env php gen(10); -zenData('bug')->gen(10); -zenData('story')->gen(10); -zenData('relation')->loadYaml('relation')->gen(3); -zenData('repo')->loadYaml('config')->gen(4); -zenData('repohistory')->loadYaml('repohistory')->gen(1); +// 1. 导入依赖(路径固定,不可修改) +include dirname(__FILE__, 5) . '/test/lib/init.php'; +include dirname(__FILE__, 2) . '/lib/repo.unittest.class.php'; -global $tester, $app; -$repo = $tester->loadModel('repo'); -include($app->getModuleRoot() . '/repo/control.php'); -$app->control = new repo(); +// 2. zendata数据准备 +$taskTable = zenData('task'); +$taskTable->id->range('1-20'); +$taskTable->name->range('任务1,任务2,任务3,任务4,任务5,任务6,任务7,任务8{12}'); +$taskTable->status->range('wait{5},doing{10},done{5}'); +$taskTable->gen(20); -$repoID = 1; -$commit = 'c808480afe22d3a55d94e91c59a8f3170212ade0'; +$bugTable = zenData('bug'); +$bugTable->id->range('1-20'); +$bugTable->title->range('缺陷1,缺陷2,缺陷3,缺陷4{16}'); +$bugTable->status->range('active{10},resolved{10}'); +$bugTable->gen(20); -r($repo->getRelationByCommit($repoID, $commit, 'task')) && p('0:type') && e('task'); //获取任务关联信息 -r($repo->getRelationByCommit($repoID, $commit, 'bug')) && p('0:id') && e('4'); //获取任务关联信息 -r($repo->getRelationByCommit($repoID, $commit, 'story')) && p('0:type') && e('story'); //获取任务关联信息 \ No newline at end of file +$storyTable = zenData('story'); +$storyTable->id->range('1-20'); +$storyTable->title->range('需求1,需求2,需求3,需求4,需求5,需求6,需求7,需求8,需求9,需求10{10}'); +$storyTable->status->range('active{10},closed{10}'); +$storyTable->gen(20); + +$relationTable = zenData('relation'); +$relationTable->id->range('1-6'); +$relationTable->product->range('1{6}'); +$relationTable->execution->range('1{6}'); +$relationTable->AType->range('revision{6}'); +$relationTable->AID->range('1{6}'); +$relationTable->AVersion->range('1{6}'); +$relationTable->relation->range('commit{6}'); +$relationTable->BType->range('task,bug,story,task,bug,story'); +$relationTable->BID->range('8,4,10,9,5,11'); +$relationTable->BVersion->range('1{6}'); +$relationTable->extra->range('1{6}'); +$relationTable->gen(6); + +$repoTable = zenData('repo'); +$repoTable->id->range('1-5'); +$repoTable->name->range('测试代码库1,测试代码库2,测试代码库3{3}'); +$repoTable->SCM->range('Git{5}'); +$repoTable->gen(5); + +zenData('repohistory')->loadYaml('repohistory')->gen(5); + +// 3. 用户登录 +su('admin'); + +// 4. 创建测试实例 +$repoTest = new repoTest(); + +// 5. 测试步骤(必须包含至少5个测试步骤) +r($repoTest->getRelationByCommitTest(1, 'c808480afe22d3a55d94e91c59a8f3170212ade0', 'task')) && p('0:type') && e('task'); // 步骤1:根据代码库ID和提交版本获取任务关联信息 +r($repoTest->getRelationByCommitTest(1, 'c808480afe22d3a55d94e91c59a8f3170212ade0', 'bug')) && p('0:id') && e('4'); // 步骤2:根据代码库ID和提交版本获取缺陷关联信息 +r($repoTest->getRelationByCommitTest(1, 'c808480afe22d3a55d94e91c59a8f3170212ade0', 'story')) && p('0:type') && e('story'); // 步骤3:根据代码库ID和提交版本获取需求关联信息 +r($repoTest->getRelationByCommitTest(1, 'nonexistent-commit-hash', 'task')) && p() && e('0'); // 步骤4:测试不存在的提交版本查询 +r($repoTest->getRelationByCommitTest(999, 'c808480afe22d3a55d94e91c59a8f3170212ade0', 'task')) && p() && e('0'); // 步骤5:测试无效的代码库ID查询 +r($repoTest->getRelationByCommitTest(1, 'c808480afe22d3a55d94e91c59a8f3170212ade0', '')) && p() && e('Array'); // 步骤6:测试获取所有类型的关联信息 +r($repoTest->getRelationByCommitTest(1, '', 'task')) && p() && e('('); // 步骤7:测试空提交版本参数查询 \ No newline at end of file