Files
2025-11-14 13:05:25 +08:00

151 lines
5.6 KiB
PHP
Executable File

#!/usr/bin/env php
<?php
/**
title=测试 projectModel::formatDataForList();
timeout=0
cid=17812
- 执行projectTest模块的formatDataForListTest方法,参数是$project1, $PMList1
- 属性budget @¥ 5万
- 属性estimate @120h
- 属性consume @80h
- 属性surplus @40h
- 属性PM @项目经理1
- 属性PMAvatar @avatar1.jpg
- 执行projectTest模块的formatDataForListTest方法,参数是$project2, array 属性budget @待定
- 执行projectTest模块的formatDataForListTest方法,参数是$project3, $PMList3
- 属性budget @¥ 15万
- 属性PM @项目经理2
- 执行projectTest模块的formatDataForListTest方法,参数是$project4, $PMList4
- 属性budget @$ 2亿
- 属性PM @项目经理3
- 属性PMUserID @8
- 执行projectTest模块的formatDataForListTest方法,参数是$project5, $PMList5
- 属性budget @€ 8万
- 属性PM @项目经理4
- 属性PMAvatar @avatar4.jpg
- 属性PMUserID @9
- 执行projectTest模块的formatDataForListTest方法,参数是$project6, $PMList6
- 属性budget @¥ 3万
- 属性end @2030-12-31
- 属性PM @项目经理5
- 执行projectTest模块的formatDataForListTest方法,参数是$project7, array 属性budget @¥ 2.5万
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/project.unittest.class.php';
// 2. zendata数据准备(根据需要配置)
$user = zenData('user');
$user->id->range('1-10');
$user->account->range('admin,user1,user2,user3,user4,pm1,pm2,pm3,pm4,pm5');
$user->realname->range('管理员,用户1,用户2,用户3,用户4,项目经理1,项目经理2,项目经理3,项目经理4,项目经理5');
$user->avatar->range('avatar1.jpg,avatar2.jpg,avatar3.jpg,avatar4.jpg,avatar5.jpg');
$user->gen(10);
// 3. 用户登录(选择合适角色)
su('admin');
// 4. 创建测试实例(变量名与模块名一致)
$projectTest = new projectTest();
// 5. 🔴 强制要求:必须包含至少5个测试步骤
// 测试步骤1:正常项目对象格式化
$project1 = new stdClass();
$project1->budget = '50000';
$project1->budgetUnit = 'CNY';
$project1->estimate = '120';
$project1->consumed = '80';
$project1->left = '40';
$project1->progress = '66.67';
$project1->end = '2024-12-31';
$project1->PM = 'pm1';
$project1->status = 'doing';
$PMList1 = array('pm1' => (object)array('id' => 6, 'realname' => '项目经理1', 'avatar' => 'avatar1.jpg'));
r($projectTest->formatDataForListTest($project1, $PMList1)) && p('budget,estimate,consume,surplus,PM,PMAvatar') && e('¥ 5万,120h,80h,40h,项目经理1,avatar1.jpg');
// 测试步骤2:预算为0的项目格式化
$project2 = new stdClass();
$project2->budget = '0';
$project2->budgetUnit = 'CNY';
$project2->estimate = '100';
$project2->consumed = '50';
$project2->left = '50';
$project2->progress = '50.00';
$project2->end = '2024-11-30';
$project2->PM = '';
$project2->status = 'wait';
r($projectTest->formatDataForListTest($project2, array())) && p('budget') && e('待定');
// 测试步骤3:大额预算项目格式化(万元)
$project3 = new stdClass();
$project3->budget = '150000';
$project3->budgetUnit = 'CNY';
$project3->estimate = '200';
$project3->consumed = '100';
$project3->left = '100';
$project3->progress = '50.00';
$project3->end = '2025-03-31';
$project3->PM = 'pm2';
$project3->status = 'doing';
$PMList3 = array('pm2' => (object)array('id' => 7, 'realname' => '项目经理2', 'avatar' => 'avatar2.jpg'));
r($projectTest->formatDataForListTest($project3, $PMList3)) && p('budget,PM') && e('¥ 15万,项目经理2');
// 测试步骤4:大额预算项目格式化(亿元)
$project4 = new stdClass();
$project4->budget = '200000000';
$project4->budgetUnit = 'USD';
$project4->estimate = '500';
$project4->consumed = '300';
$project4->left = '200';
$project4->progress = '60.00';
$project4->end = '2025-12-31';
$project4->PM = 'pm3';
$project4->status = 'doing';
$PMList4 = array('pm3' => (object)array('id' => 8, 'realname' => '项目经理3', 'avatar' => 'avatar3.jpg'));
r($projectTest->formatDataForListTest($project4, $PMList4)) && p('budget,PM,PMUserID') && e('$ 2亿,项目经理3,8');
// 测试步骤5:带项目经理信息的项目格式化
$project5 = new stdClass();
$project5->budget = '80000';
$project5->budgetUnit = 'EUR';
$project5->estimate = '160';
$project5->consumed = '120';
$project5->left = '40';
$project5->progress = '75.00';
$project5->end = '2024-10-31';
$project5->PM = 'pm4';
$project5->status = 'doing';
$PMList5 = array('pm4' => (object)array('id' => 9, 'realname' => '项目经理4', 'avatar' => 'avatar4.jpg'));
r($projectTest->formatDataForListTest($project5, $PMList5)) && p('budget,PM,PMAvatar,PMUserID') && e('€ 8万,项目经理4,avatar4.jpg,9');
// 测试步骤6:长期项目结束时间格式化
$project6 = new stdClass();
$project6->budget = '30000';
$project6->budgetUnit = 'CNY';
$project6->estimate = '80';
$project6->consumed = '40';
$project6->left = '40';
$project6->progress = '50.00';
$project6->end = '2030-12-31';
$project6->PM = 'pm5';
$project6->status = 'doing';
$PMList6 = array('pm5' => (object)array('id' => 10, 'realname' => '项目经理5', 'avatar' => 'avatar5.jpg'));
r($projectTest->formatDataForListTest($project6, $PMList6)) && p('budget,end,PM') && e('¥ 3万,2030-12-31,项目经理5');
// 测试步骤7:空项目经理的项目格式化
$project7 = new stdClass();
$project7->budget = '25000';
$project7->budgetUnit = 'CNY';
$project7->estimate = '60';
$project7->consumed = '30';
$project7->left = '30';
$project7->progress = '50.00';
$project7->end = '2024-09-30';
$project7->PM = '';
$project7->status = 'wait';
r($projectTest->formatDataForListTest($project7, array())) && p('budget') && e('¥ 2.5万');