* [misc] Enhance unit tests for repoModel::getRelationByCommit() method

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-09-25 11:59:11 +08:00
co-authored by Claude
parent 3cbd82df83
commit 9dc2b04c20
+65 -23
View File
@@ -1,36 +1,78 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/repo.unittest.class.php';
su('admin');
/**
title=- 获取任务关联信息第8条的title属性 @
title=测试 repoModel::getRelationByCommit();
timeout=0
cid=8
cid=0
- 获取任务关联信息第0条的type属性 @task
- 获取任务关联信息第0条的id属性 @4
- 获取任务关联信息第0条的type属性 @story
- 步骤1:根据代码库ID和提交版本获取任务关联信息第0条的type属性 @task
- 步骤2:根据代码库ID和提交版本获取缺陷关联信息第0条的id属性 @4
- 步骤3:根据代码库ID和提交版本获取需求关联信息第0条的type属性 @story
- 步骤4:测试不存在的提交版本查询 @0
- 步骤5:测试无效的代码库ID查询 @0
- 步骤6:测试获取所有类型的关联信息 @Array
- 步骤7:测试空提交版本参数查询 @(
*/
zenData('task')->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'); //获取任务关联信息
$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:测试空提交版本参数查询