* [misc] Enhance unit tests for svnModel::getRepos() 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 09:16:40 +08:00
co-authored by Claude
parent 90b1f43274
commit d3bd48eae4
3 changed files with 115 additions and 19 deletions
@@ -179,4 +179,20 @@ class svnTest
return $result;
}
/**
* Test getRepos method.
*
* @access public
* @return array
*/
public function getReposTest(): array
{
ob_start();
$result = $this->objectModel->getRepos();
$output = ob_get_clean();
if(dao::isError()) return dao::getError();
return array('repos' => $result, 'output' => $output);
}
}
+51 -19
View File
@@ -3,31 +3,63 @@
/**
title=svnModel->getRepos();
title=测试 svnModel::getRepos();
timeout=0
cid=1
cid=0
- 获取不到数据时,提示错误信息 @5
- 获取第一条svn记录的path属性属性1 @https://svn.qc.oop.cc/svn/unittest1
- 获取不到数据时,提示错误信息 @You must set one svn repo.
- 步骤1:正常获取Subversion仓库数量 @5
- 步骤2:验证返回第一个仓库路径 @1
- 步骤3:空仓库情况输出提示信息 @You must set one svn repo.
- 步骤4:验证返回数据数量 @3
- 步骤5:验证getRepos方法调用正确性 @3
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/svn.unittest.class.php';
zenData('repo')->loadYaml('repo')->gen(10);
su('admin');
global $tester;
$svn = $tester->loadModel('svn');
$repos = $svn->getRepos();
r(count($repos)) && p() && e('5'); // 获取不到数据时,提示错误信息
r($repos) && p('1') && e('https://svn.qc.oop.cc/svn/unittest1'); // 获取第一条svn记录的path属性
// 使用默认测试数据,但改为Subversion类型
zenData('repo')->gen(0);
ob_start();
$svn->getRepos();
$result = ob_get_clean();
r($result) && p() && e('You must set one svn repo.'); // 获取不到数据时,提示错误信息
$table = zenData('repo');
$table->id->range('1-10');
$table->name->range('svn-test{10}');
$table->path->range('1-10', 'https://svn.qc.oop.cc/svn/unittest%s');
$table->SCM->range('Subversion{5},Git{3},Gitlab{2}');
$table->synced->range('1{5},0{5}');
$table->deleted->range('0{8},1{2}');
$table->gen(10);
su('admin');
$svnTest = new svnTest();
$result = $svnTest->getReposTest();
r(count($result['repos'])) && p() && e('5'); // 步骤1:正常获取Subversion仓库数量
r($result['repos']) && p('0') && e('1'); // 步骤2:验证返回第一个仓库路径
// 测试空仓库情况
zenData('repo')->gen(0);
$result = $svnTest->getReposTest();
r($result['output']) && p() && e('You must set one svn repo.'); // 步骤3:空仓库情况输出提示信息
// 恢复数据,测试返回类型
$table = zenData('repo');
$table->id->range('1-3');
$table->name->range('test-repo{3}');
$table->path->range('1-3', 'https://svn.example.com/test%s');
$table->SCM->range('Subversion{3}');
$table->synced->range('1{3}');
$table->deleted->range('0{3}');
$table->gen(3);
$result = $svnTest->getReposTest();
r(count($result['repos'])) && p() && e('3'); // 步骤4:验证返回数据数量
// 验证方法调用正确性
global $tester;
$svnModel = $tester->loadModel('svn');
$directResult = $svnModel->getRepos();
r(count($directResult)) && p() && e('3'); // 步骤5:验证getRepos方法调用正确性
@@ -0,0 +1,48 @@
---
title: 测试svnModel::getRepos()方法的仓库数据
author: Claude
version: "1.0"
fields:
- field: id
range: 1-20
- field: product
range: 1,2,3,0
- field: projects
range: '1,2'
- field: name
range: svn-repo{5}, git-repo{5}, gitlab-repo{5}, subversion-repo{5}
- field: path
range: ['https://svn.example.com/svn/repo{5}', 'https://git.example.com/repo{5}', 'https://gitlab.example.com/repo{5}', '/local/svn/repo{5}']
- field: prefix
range: ''
- field: encoding
range: utf-8{15},gbk{3},gb2312{2}
- field: SCM
range: Subversion{10},Git{5},Gitlab{5}
- field: client
range: /usr/bin/svn{10},/usr/bin/git{10}
- field: serviceHost
range: ''
- field: serviceProject
range: ''
- field: commits
range: 0-1000:R
- field: account
range: admin{5},user{5},tester{5},[']{5}
- field: password
range: password{10},[']{10}
- field: encrypt
range: plain{15},base64{5}
- field: acl
range: ['']
- field: synced
range: 0{10},1{10}
- field: lastSync
range: '2023-01-01 00:00:00'-'2023-12-31 23:59:59':86400D
- field: lastCommit
range: '2023-01-01 00:00:00'-'2023-12-31 23:59:59':86400D
- field: desc
range: 测试仓库{10},正式仓库{5},开发仓库{5}
- field: deleted
range: 0{18},1{2}