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

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
liugang
2025-09-18 13:11:42 +08:00
co-authored by Claude
parent f82c99fbf0
commit a3191e9f47
2 changed files with 201 additions and 0 deletions
+121
View File
@@ -0,0 +1,121 @@
#!/usr/bin/env php
<?php
/**
title=测试 programZen::buildProgramForCreate();
timeout=0
cid=0
- 执行programTest模块的buildProgramForCreateTest方法,参数是$postData1
- 属性name @测试项目集1
- 属性type @program
- 属性begin @2024-01-01
- 属性end @2024-12-31
- 属性budget @100000
- 属性budgetUnit @CNY
- 属性openedBy @admin
- 执行programTest模块的buildProgramForCreateTest方法,参数是$postData2
- 属性name @长期项目集
- 属性type @program
- 属性begin @2024-01-01
- 属性end @2059-12-31
- 执行programTest模块的buildProgramForCreateTest方法,参数是$postData3
- 属性name @开放项目集
- 属性acl @open
- 属性whitelist @~~
- 执行programTest模块的buildProgramForCreateTest方法,参数是$postData4
- 属性name @私有项目集
- 属性acl @private
- 属性whitelist @admin
- 执行programTest模块的buildProgramForCreateTest方法,参数是$postData5
- 属性name @最小配置项目集
- 属性type @program
- 属性code @~~
- 属性openedBy @admin
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/program.unittest.class.php';
// 2. zendata数据准备(根据需要配置)
$table = zenData('user');
$table->account->range('admin,user1,user2,user3,pm1');
$table->realname->range('管理员,用户1,用户2,用户3,项目经理1');
$table->gen(5);
// 3. 用户登录(选择合适角色)
su('admin');
// 4. 创建测试实例(变量名与模块名一致)
$programTest = new programTest();
// 5. 强制要求:必须包含至少5个测试步骤
// 步骤1:基本的创建项目集数据
$postData1 = array(
'name' => '测试项目集1',
'begin' => '2024-01-01',
'end' => '2024-12-31',
'budget' => '100000',
'budgetUnit'=> 'CNY',
'desc' => '这是项目集描述',
'acl' => 'private',
'whitelist' => array('admin', 'user1'),
'uid' => 'test123'
);
r($programTest->buildProgramForCreateTest($postData1)) && p('name,type,begin,end,budget,budgetUnit,openedBy') && e('测试项目集1,program,2024-01-01,2024-12-31,100000,CNY,admin');
// 步骤2:长期项目集(longTime=1)
$postData2 = array(
'name' => '长期项目集',
'begin' => '2024-01-01',
'end' => '2024-12-31',
'longTime' => 1,
'budget' => '500000',
'budgetUnit'=> 'USD',
'desc' => '长期项目集',
'acl' => 'private',
'whitelist' => array('pm1'),
'uid' => 'test456'
);
r($programTest->buildProgramForCreateTest($postData2)) && p('name,type,begin,end') && e('长期项目集,program,2024-01-01,2059-12-31');
// 步骤3:开放权限的项目集(acl=open)
$postData3 = array(
'name' => '开放项目集',
'begin' => '2024-03-01',
'end' => '2024-09-30',
'budget' => '200000',
'budgetUnit'=> 'EUR',
'desc' => '开放权限项目集',
'acl' => 'open',
'whitelist' => array('user1', 'user2', 'user3'),
'uid' => 'test789'
);
r($programTest->buildProgramForCreateTest($postData3)) && p('name,acl,whitelist') && e('开放项目集,open,~~');
// 步骤4:私有权限的项目集(acl=private)
$postData4 = array(
'name' => '私有项目集',
'begin' => '2024-04-01',
'end' => '2024-10-31',
'budget' => '150000',
'budgetUnit'=> 'CNY',
'desc' => '私有权限项目集',
'acl' => 'private',
'whitelist' => array('admin'),
'uid' => 'test111'
);
r($programTest->buildProgramForCreateTest($postData4)) && p('name,acl,whitelist') && e('私有项目集,private,admin');
// 步骤5:最小必填字段配置
$postData5 = array(
'name' => '最小配置项目集',
'begin' => '2024-06-01',
'end' => '2024-06-30',
'uid' => 'test222'
);
r($programTest->buildProgramForCreateTest($postData5)) && p('name,type,code,openedBy') && e('最小配置项目集,program,~~,admin');
@@ -0,0 +1,80 @@
---
title: 用户数据
desc: 用于buildProgramForCreate测试的用户数据
author: AI
version: 1.0
fields:
- field: id
note: 用户ID
range: 1-10
prefix: ""
postfix: ""
loop: 0
format: ""
- field: account
note: 用户账号
range: admin,user1,user2,user3,pm1,pm2,dev1,dev2,test1,test2
prefix: ""
postfix: ""
loop: 0
format: ""
- field: password
note: 用户密码
range: 1-10
format: "e10adc3949ba59abbe56e057f20f883e"
- field: realname
note: 真实姓名
range: 管理员,用户1,用户2,用户3,项目经理1,项目经理2,开发1,开发2,测试1,测试2
prefix: ""
postfix: ""
loop: 0
format: ""
- field: role
note: 用户角色
range: others{10}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: dept
note: 部门ID
range: 1-5
prefix: ""
postfix: ""
loop: 0
format: ""
- field: gender
note: 性别
range: m{5},f{5}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: email
note: 邮箱
range: 1-10
format: "test%d@example.com"
- field: join
note: 入职日期
range: 2020-01-01,2021-01-01,2022-01-01,2023-01-01,2024-01-01{6}
prefix: ""
postfix: ""
loop: 0
format: ""
- field: deleted
note: 删除标志
range: 0{10}
prefix: ""
postfix: ""
loop: 0
format: ""