+ [misc] Add unit tests for gitlabZen::getProjectMemberData() method

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-11-12 17:45:42 +08:00
co-authored by Claude
parent f0501c1320
commit c8b3ac2bf9
2 changed files with 84 additions and 3 deletions
+19 -3
View File
@@ -75,11 +75,27 @@ class gitlabZenTest extends baseTest
{
global $app;
/* 创建 gitlabZen 实例 */
$zenInstance = $app->loadTarget('gitlab', '', 'zen');
/* 加载 control 和 zen 类 */
if(!class_exists('gitlab'))
{
require_once $app->getModulePath('', 'gitlab') . 'control.php';
}
if(!class_exists('gitlabZen'))
{
require_once $app->getModulePath('', 'gitlab') . 'zen.php';
}
/* 使用反射创建 gitlabZen 实例,跳过构造函数 */
$reflection = new ReflectionClass('gitlabZen');
$zenInstance = $reflection->newInstanceWithoutConstructor();
/* 初始化必要的属性 */
$zenInstance->app = $app;
$zenInstance->config = $app->config;
$zenInstance->lang = $app->lang;
$zenInstance->dao = $app->loadClass('dao');
/* 通过反射调用 getProjectMemberData 方法 */
$reflection = new ReflectionClass('gitlabZen');
$method = $reflection->getMethod('getProjectMemberData');
$method->setAccessible(true);
+65
View File
@@ -0,0 +1,65 @@
#!/usr/bin/env php
<?php
/**
title=测试 gitlabZen::getProjectMemberData();
timeout=0
cid=0
- 执行gitlabTest模块的getProjectMemberDataTest方法,参数是array 第0条的0:user_id属性 @2
- 执行gitlabTest模块的getProjectMemberDataTest方法,参数是array 第0条的0:access_level属性 @40
- 执行gitlabTest模块的getProjectMemberDataTest方法,参数是array 第0条的0:expires_at属性 @2025-12-31
- 执行gitlabTest模块的getProjectMemberDataTest方法,参数是array 第2条的0:user_id属性 @2
- 执行gitlabTest模块的getProjectMemberDataTest方法,参数是array 第2条的0:access_level属性 @50
- 执行gitlabTest模块的getProjectMemberDataTest方法,参数是array 第1条的0属性 @2
- 执行gitlabTest模块的getProjectMemberDataTest方法,参数是array 第0条的0:user_id属性 @3
- 执行gitlabTest模块的getProjectMemberDataTest方法,参数是array 第1条的0属性 @1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/zen.class.php';
su('admin');
/* 设置 methodName 避免 gitlab 控制器构造函数报错 */
global $app;
$app->setMethodName('test');
$gitlabTest = new gitlabZenTest();
/* 准备测试数据 */
$member1 = new stdClass();
$member1->id = 1;
$member1->access_level = 30;
$member1->expires_at = '2025-12-31';
$member2 = new stdClass();
$member2->id = 2;
$member2->access_level = 40;
$member2->expires_at = '2025-12-31';
$member3 = new stdClass();
$member3->id = 3;
$member3->access_level = 50;
$member3->expires_at = '2025-12-31';
$member2Updated = new stdClass();
$member2Updated->id = 2;
$member2Updated->access_level = 50;
$member2Updated->expires_at = '2025-12-31';
/* 准备绑定用户和账号数据 */
$bindedUsers = array('user1' => 1, 'user2' => 2);
$accounts = array('user1', 'user2');
$originalUsers = array('user1', 'user2');
r($gitlabTest->getProjectMemberDataTest(array($member1), array(1 => $member1, 2 => $member2), $bindedUsers, $accounts, $originalUsers)) && p('0:0:user_id') && e('2');
r($gitlabTest->getProjectMemberDataTest(array($member1), array(1 => $member1, 2 => $member2), $bindedUsers, $accounts, $originalUsers)) && p('0:0:access_level') && e('40');
r($gitlabTest->getProjectMemberDataTest(array($member1), array(1 => $member1, 2 => $member2), $bindedUsers, $accounts, $originalUsers)) && p('0:0:expires_at') && e('2025-12-31');
r($gitlabTest->getProjectMemberDataTest(array($member1, $member2), array(1 => $member1, 2 => $member2Updated), $bindedUsers, $accounts, $originalUsers)) && p('2:0:user_id') && e('2');
r($gitlabTest->getProjectMemberDataTest(array($member1, $member2), array(1 => $member1, 2 => $member2Updated), $bindedUsers, $accounts, $originalUsers)) && p('2:0:access_level') && e('50');
r($gitlabTest->getProjectMemberDataTest(array($member1, $member2), array(1 => $member1), array('user1' => 1, 'user2' => 2), array('user1'), array('user1', 'user2'))) && p('1:0') && e('2');
r($gitlabTest->getProjectMemberDataTest(array($member1, $member2), array(2 => $member2Updated, 3 => $member3), array('user1' => 1, 'user2' => 2), array('user2'), array('user1', 'user2'))) && p('0:0:user_id') && e('3');
r($gitlabTest->getProjectMemberDataTest(array($member1, $member2), array(2 => $member2Updated, 3 => $member3), array('user1' => 1, 'user2' => 2), array('user2'), array('user1', 'user2'))) && p('1:0') && e('1');