+ [misc] Add unit tests for programZen::getPMListByPrograms() method

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-09-19 11:05:47 +08:00
co-authored by Claude
parent 2152f5ba6b
commit 0dd949b033
4 changed files with 178 additions and 0 deletions
@@ -0,0 +1,31 @@
<?php
declare(strict_types = 1);
class programTest
{
public function __construct()
{
global $tester;
$this->tester = $tester;
$tester->app->setModuleName('program');
$tester->loadModel('program');
$this->objectZen = initReference('program');
}
/**
* Test getPMListByPrograms method.
*
* @param array $programs
* @access public
* @return mixed
*/
public function getPMListByProgramsTest($programs = array())
{
$method = $this->objectZen->getMethod('getPMListByPrograms');
$method->setAccessible(true);
$result = $method->invokeArgs($this->objectZen->newInstance(), array($programs));
if(dao::isError()) return dao::getError();
return $result;
}
}
+42
View File
@@ -0,0 +1,42 @@
#!/usr/bin/env php
<?php
/**
title=测试 programZen::getPMListByPrograms();
timeout=0
cid=0
- 执行programTest模块的getPMListByProgramsTest方法,参数是array @0
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/programzen.unittest.class.php';
zendata('project')->loadYaml('project_getpmlistbyprograms', false, 2)->gen(20);
zendata('user')->loadYaml('user_getpmlistbyprograms', false, 2)->gen(10);
su('admin');
$programTest = new programTest();
r($programTest->getPMListByProgramsTest(array())) && p() && e('0');
r($programTest->getPMListByProgramsTest(array(
(object)array('id' => 1, 'type' => 'program', 'PM' => 'admin'),
(object)array('id' => 2, 'type' => 'program', 'PM' => 'user1')
))) && p() && e('2');
r($programTest->getPMListByProgramsTest(array(
(object)array('id' => 1, 'type' => 'program', 'PM' => 'admin'),
(object)array('id' => 2, 'type' => 'program', 'PM' => ''),
(object)array('id' => 3, 'type' => 'program', 'PM' => 'user2')
))) && p() && e('2');
r($programTest->getPMListByProgramsTest(array(
(object)array('id' => 1, 'type' => 'program', 'PM' => 'admin'),
(object)array('id' => 2, 'type' => 'program', 'PM' => 'admin'),
(object)array('id' => 3, 'type' => 'program', 'PM' => 'user1')
))) && p() && e('2');
r($programTest->getPMListByProgramsTest(array(
(object)array('id' => 1, 'type' => 'program', 'PM' => 'admin'),
(object)array('id' => 2, 'type' => 'project', 'PM' => 'user1')
))) && p() && e('2');
@@ -0,0 +1,56 @@
---
title: 测试数据:项目集和项目数据
desc: 为getPMListByPrograms方法测试提供项目集和项目测试数据
author: Claude
version: 1.0
fields:
- field: id
note: 项目ID
range: 1-20
prefix: ""
postfix: ""
loop: 0
format: ""
- field: type
note: 项目类型
range: program{5},project{15}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: name
note: 项目名称
range: 项目集A,项目集B,项目集C,项目集D,项目集E,项目A1,项目A2,项目B1,项目B2,项目B3,项目C1,项目C2,项目C3,项目D1,项目D2,项目D3,项目E1,项目E2,项目E3,项目E4
prefix: ""
postfix: ""
loop: 0
format: ""
- field: PM
note: 项目经理
range: admin{5},user1{3},user2{4},user3{3},user4{2},[]{3}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: status
note: 项目状态
range: doing{8},wait{5},closed{4},suspended{3}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: parent
note: 父项目
range: 0{5},1{3},2{4},3{3},4{2},5{3}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: deleted
note: 删除标记
range: 0
prefix: ""
postfix: ""
loop: 0
format: ""
@@ -0,0 +1,49 @@
---
title: 测试数据:用户数据
desc: 为getPMListByPrograms方法测试提供用户测试数据
author: Claude
version: 1.0
fields:
- field: id
note: 用户ID
range: 1-10
prefix: ""
postfix: ""
loop: 0
format: ""
- field: account
note: 用户账号
range: admin,user1,user2,user3,user4,user5,user6,user7,user8,user9
prefix: ""
postfix: ""
loop: 0
format: ""
- field: realname
note: 真实姓名
range: 管理员,用户一,用户二,用户三,用户四,用户五,用户六,用户七,用户八,用户九
prefix: ""
postfix: ""
loop: 0
format: ""
- field: role
note: 用户角色
range: admin{1},qa{3},dev{4},pm{2}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: avatar
note: 头像
range: ""
prefix: ""
postfix: ""
loop: 0
format: ""
- field: deleted
note: 删除标记
range: 0
prefix: ""
postfix: ""
loop: 0
format: ""