* [misc] Enhance unit tests for jobModel::getListByRepoID() 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:17 +08:00
co-authored by Claude
parent 1dcccf4e3b
commit 48571aee32
2 changed files with 230 additions and 14 deletions
+41 -14
View File
@@ -1,26 +1,53 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/job.unittest.class.php';
su('admin');
/**
title=jobModel::getListByRepoId();
title=测试 jobModel::getListByRepoID();
timeout=0
cid=1
cid=0
- 获取repo为1的name第1条的name属性 @这是一个Job1
- 获取repo为1的lastStatus第1条的lastStatus属性 @a
- 获取repo为100001的name第100001条的name属性 @0
- 测试步骤1:repo=1有3个未删除作业 @3
- 测试步骤2:repo=2有2个作业 @2
- 测试步骤3:不存在的repo返回空 @0
- 测试步骤4:repo=0的边界值测试 @1
- 测试步骤5:验证排序后第一个作业名称第8条的name属性 @Jenkins Job3
- 测试步骤6:验证返回字段完整性
- 第8条的id属性 @8
- 第8条的8:name属性 @Jenkins Job3
- 第8条的8:lastStatus属性 @running
- 测试步骤7:验证特定repo的作业ID第6条的id属性 @6
*/
zenData('job')->gen('1');
$job = new jobTest();
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/job.unittest.class.php';
$repoIdList = array('1', '100001');
// 准备测试数据
$jobTable = zenData('job');
$jobTable->id->range('1-10');
$jobTable->name->range('Jenkins Job1, Jenkins Job2, GitLab Pipeline1, Test Job1, API Test Job, Performance Test, Security Test, Jenkins Job3, Deploy Job, Monitor Job');
$jobTable->repo->range('1, 1, 2, 2, 3, 999, 0, 1, 888, 1');
$jobTable->product->range('1-3');
$jobTable->frame->range('phpunit, pytest, jest, junit, mocha, cypress, selenium, testng, robot, cucumber');
$jobTable->engine->range('jenkins{6}, gitlab{2}, github{2}');
$jobTable->server->range('1-5');
$jobTable->pipeline->range('/job/pipeline1, /job/pipeline2, main, develop, feature, master, test, release, deploy, monitor');
$jobTable->lastStatus->range('success, failed, running, success, \'\', failed, success, running, success, failed');
$jobTable->deleted->range('0, 0, 0, 0, 0, 0, 0, 0, 1, 1');
$jobTable->gen(10);
r($job->getListByRepoIDTest($repoIdList[0])) && p('1:name') && e('这是一个Job1'); // 获取repo为1的name
r($job->getListByRepoIDTest($repoIdList[0])) && p('1:lastStatus') && e('a'); // 获取repo为1的lastStatus
r($job->getListByRepoIDTest($repoIdList[1])) && p('100001:name') && e('0'); // 获取repo为100001的name
// 使用管理员身份登录
su('admin');
// 创建测试实例
$jobTest = new jobTest();
// 测试步骤1:有效版本库ID查询 - 检查repo=1的作业数量(排除已删除)
r(count($jobTest->getListByRepoIDTest(1))) && p() && e('3'); // 测试步骤1:repo=1有3个未删除作业
r(count($jobTest->getListByRepoIDTest(2))) && p() && e('2'); // 测试步骤2:repo=2有2个作业
r(count($jobTest->getListByRepoIDTest(99999))) && p() && e('0'); // 测试步骤3:不存在的repo返回空
r(count($jobTest->getListByRepoIDTest(0))) && p() && e('1'); // 测试步骤4:repo=0的边界值测试
r($jobTest->getListByRepoIDTest(1)) && p('8:name') && e('Jenkins Job3'); // 测试步骤5:验证排序后第一个作业名称
r($jobTest->getListByRepoIDTest(1)) && p('8:id,8:name,8:lastStatus') && e('8,Jenkins Job3,running'); // 测试步骤6:验证返回字段完整性
r($jobTest->getListByRepoIDTest(999)) && p('6:id') && e('6'); // 测试步骤7:验证特定repo的作业ID
@@ -0,0 +1,189 @@
---
title: job表数据定义 - getListByRepoID方法测试
desc: 为job模块getListByRepoID方法生成测试数据
author: Claude
version: 1.0
fields:
- field: id
note: 作业ID
range: 1-10
prefix: ""
postfix: ""
loop: 0
format: ""
- field: name
note: 作业名称
range: Jenkins Job1, Jenkins Job2, Jenkins Job3, GitLab Pipeline1, GitLab Pipeline2, Test Job1, Test Job2, API Test Job, Security Test, Performance Test
prefix: ""
postfix: ""
loop: 0
format: ""
- field: repo
note: 版本库ID
range: 1, 1, 1, 2, 2, 3, 999, 999, 0, 5
prefix: ""
postfix: ""
loop: 0
format: ""
- field: product
note: 产品ID
range: 1-3
prefix: ""
postfix: ""
loop: 0
format: ""
- field: frame
note: 测试框架
range: phpunit{4}, pytest{3}, jest{3}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: engine
note: 引擎类型
range: jenkins{5}, gitlab{3}, github{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: autoRun
note: 自动运行
range: 1{8}, 0{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: server
note: 服务器ID
range: 1-5
prefix: ""
postfix: ""
loop: 0
format: ""
- field: pipeline
note: 流水线配置
range: /job/pipeline1{3}, /job/pipeline2{2}, main{2}, develop{2}, feature{1}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: triggerType
note: 触发类型
range: commit{5}, tag{3}, schedule{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: sonarqubeServer
note: SonarQube服务器ID
range: 0{6}, 1{2}, 2{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: projectKey
note: 项目Key
range: project1{3}, project2{2}, ''{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: svnDir
note: SVN目录
range: /trunk{3}, /branches{2}, ''{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: atDay
note: 定时执行日期
range: ''
prefix: ""
postfix: ""
loop: 0
format: ""
- field: atTime
note: 定时执行时间
range: ''
prefix: ""
postfix: ""
loop: 0
format: ""
- field: customParam
note: 自定义参数
range: ''{8}, param1=value1{1}, param2=value2{1}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: comment
note: 备注
range: 测试作业{3}, 自动化测试{2}, 单元测试{2}, CI流水线{3}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: triggerActions
note: 触发动作
range: ''
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdBy
note: 创建者
range: admin{5}, user{3}, tester{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: createdDate
note: 创建时间
range: '2023-01-01 00:00:00'
prefix: ""
postfix: ""
loop: 0
format: ""
- field: editedBy
note: 编辑者
range: admin{5}, user{3}, tester{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: editedDate
note: 编辑时间
range: '2023-01-01 00:00:00'
prefix: ""
postfix: ""
loop: 0
format: ""
- field: lastExec
note: 最后执行时间
range: '2023-01-01 10:00:00'{3}, ''{7}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: lastStatus
note: 最后执行状态
range: success, failed, running, success, failed, '', '', success, failed, running
prefix: ""
postfix: ""
loop: 0
format: ""
- field: lastTag
note: 最后标签
range: v1.0{2}, v2.0{2}, ''{6}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: deleted
note: 删除状态
range: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
prefix: ""
postfix: ""
loop: 0
format: ""