+ [misc] Add unit tests for gitlabModel::apiCreateTag() method

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-09-15 15:06:16 +08:00
co-authored by Claude
parent 257a31d4e8
commit aa1a826ea9
2 changed files with 89 additions and 0 deletions
@@ -509,4 +509,21 @@ class gitlabTest
if(dao::isError()) return dao::getError();
return $result ? $this->gitlab->loadModel($issue->objectType)->getByID($issue->objectID) : false;
}
/**
* Test apiCreateTag method.
*
* @param int $gitlabID
* @param int $projectID
* @param object $tag
* @access public
* @return mixed
*/
public function apiCreateTagTest(int $gitlabID, int $projectID, object $tag): mixed
{
$result = $this->gitlab->apiCreateTag($gitlabID, $projectID, $tag);
if(dao::isError()) return dao::getError();
return $result;
}
}
+72
View File
@@ -0,0 +1,72 @@
#!/usr/bin/env php
<?php
/**
title=测试 gitlabModel::apiCreateTag();
timeout=0
cid=0
- 执行$result @return empty
- 执行gitlabTest模块的apiCreateTagTest方法,参数是1, 1, $emptyTagName @0
- 执行gitlabTest模块的apiCreateTagTest方法,参数是1, 1, $emptyRef @0
- 执行$result2 @return empty
- 执行$result3 @return empty
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/gitlab.unittest.class.php';
// 2. zendata数据准备(根据需要配置)
$table = zenData('pipeline');
$table->type->range('gitlab{3}');
$table->name->range('Test GitLab{3}');
$table->url->range('https://gitlab.example.com{3}');
$table->token->range('test-token{3}');
$table->gen(3);
// 3. 用户登录(选择合适角色)
su('admin');
// 4. 创建测试实例(变量名与模块名一致)
$gitlabTest = new gitlabTest();
// 5. 强制要求:必须包含至少5个测试步骤
// 测试步骤1:使用有效参数创建标签(由于没有真实GitLab连接,期望返回null)
$validTag = new stdClass();
$validTag->tag_name = 'v1.0.0';
$validTag->ref = 'main';
$validTag->message = 'Release version 1.0.0';
$result = $gitlabTest->apiCreateTagTest(1, 1, $validTag);
if(empty($result)) $result = 'return empty';
r($result) && p() && e('return empty');
// 测试步骤2:使用空的tag_name参数
$emptyTagName = new stdClass();
$emptyTagName->tag_name = '';
$emptyTagName->ref = 'main';
r($gitlabTest->apiCreateTagTest(1, 1, $emptyTagName)) && p() && e('0');
// 测试步骤3:使用空的ref参数
$emptyRef = new stdClass();
$emptyRef->tag_name = 'v1.0.1';
$emptyRef->ref = '';
r($gitlabTest->apiCreateTagTest(1, 1, $emptyRef)) && p() && e('0');
// 测试步骤4:使用无效的gitlabID参数(getApiRoot返回空字符串)
$validTag2 = new stdClass();
$validTag2->tag_name = 'v1.0.2';
$validTag2->ref = 'main';
$result2 = $gitlabTest->apiCreateTagTest(999, 1, $validTag2);
if(empty($result2)) $result2 = 'return empty';
r($result2) && p() && e('return empty');
// 测试步骤5:使用无效的projectID参数(API调用会失败)
$validTag3 = new stdClass();
$validTag3->tag_name = 'v1.0.3';
$validTag3->ref = 'main';
$result3 = $gitlabTest->apiCreateTagTest(1, 999, $validTag3);
if(empty($result3)) $result3 = 'return empty';
r($result3) && p() && e('return empty');