+ [misc] Add unit tests for projectTao::doStart() method
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ class projectTest
|
||||
{
|
||||
global $tester;
|
||||
$this->objectModel = $tester->loadModel('project');
|
||||
$this->objectTao = $tester->loadTao('project');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -275,4 +276,24 @@ class projectTest
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test doStart method.
|
||||
*
|
||||
* @param int $projectID
|
||||
* @param object $project
|
||||
* @access public
|
||||
* @return mixed
|
||||
*/
|
||||
public function doStartTest($projectID = 0, $project = null)
|
||||
{
|
||||
$reflection = new ReflectionClass($this->objectTao);
|
||||
$method = $reflection->getMethod('doStart');
|
||||
$method->setAccessible(true);
|
||||
|
||||
$result = $method->invoke($this->objectTao, $projectID, $project);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
Executable
+67
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
|
||||
title=测试 projectTao::doStart();
|
||||
timeout=0
|
||||
cid=0
|
||||
|
||||
- 步骤1:正常情况 @1
|
||||
- 步骤2:边界值 @1
|
||||
- 步骤3:异常输入 @Array
|
||||
- 步骤4:权限验证 @(
|
||||
- 步骤5:业务规则 @[realBegan] => Array
|
||||
|
||||
*/
|
||||
|
||||
// 1. 导入依赖(路径固定,不可修改)
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/project.unittest.class.php';
|
||||
|
||||
// 2. zendata数据准备(根据需要配置)
|
||||
$table = zenData('project');
|
||||
$table->loadYaml('project_dostart', false, 2)->gen(10);
|
||||
|
||||
// 3. 用户登录(选择合适角色)
|
||||
su('admin');
|
||||
|
||||
// 4. 创建测试实例(变量名与模块名一致)
|
||||
$projectTest = new projectTest();
|
||||
|
||||
// 5. 🔴 强制要求:必须包含至少5个测试步骤
|
||||
|
||||
// 测试步骤1:正常启动项目
|
||||
$project1 = new stdclass();
|
||||
$project1->status = 'doing';
|
||||
$project1->realBegan = helper::today();
|
||||
$project1->comment = '';
|
||||
r($projectTest->doStartTest(1, $project1)) && p() && e('1'); // 步骤1:正常情况
|
||||
|
||||
// 测试步骤2:启动不存在的项目
|
||||
$project2 = new stdclass();
|
||||
$project2->status = 'doing';
|
||||
$project2->realBegan = helper::today();
|
||||
$project2->comment = '';
|
||||
r($projectTest->doStartTest(999, $project2)) && p() && e('1'); // 步骤2:边界值
|
||||
|
||||
// 测试步骤3:使用有效项目数据启动(realBegan为空字符串)
|
||||
$project3 = new stdclass();
|
||||
$project3->status = 'doing';
|
||||
$project3->realBegan = '';
|
||||
$project3->comment = '';
|
||||
r($projectTest->doStartTest(1, $project3)) && p() && e('Array'); // 步骤3:异常输入
|
||||
|
||||
// 测试步骤4:启动项目时实际开始日期超过今天
|
||||
$project4 = new stdclass();
|
||||
$project4->status = 'doing';
|
||||
$project4->realBegan = date('Y-m-d', strtotime('+1 day'));
|
||||
$project4->comment = '';
|
||||
r($projectTest->doStartTest(2, $project4)) && p() && e('('); // 步骤4:权限验证
|
||||
|
||||
// 测试步骤5:使用无效的项目ID(负数)
|
||||
$project5 = new stdclass();
|
||||
$project5->status = 'doing';
|
||||
$project5->realBegan = helper::today();
|
||||
$project5->comment = '';
|
||||
r($projectTest->doStartTest(-1, $project5)) && p() && e('[realBegan] => Array'); // 步骤5:业务规则
|
||||
@@ -0,0 +1,92 @@
|
||||
---
|
||||
title: 项目启动测试数据
|
||||
desc: 为doStart方法提供测试数据
|
||||
|
||||
fields:
|
||||
- field: id
|
||||
note: 项目ID
|
||||
range: 1-10
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: name
|
||||
note: 项目名称
|
||||
range: [项目A,项目B,项目C,测试项目{7}]
|
||||
format: ""
|
||||
- field: code
|
||||
note: 项目代码
|
||||
range: [PROJ001,PROJ002,PROJ003,TEST{7}]
|
||||
format: ""
|
||||
- field: type
|
||||
note: 项目类型
|
||||
range: project{10}
|
||||
format: ""
|
||||
- field: status
|
||||
note: 项目状态
|
||||
range: [wait{3},doing{2},suspended{2},closed{3}]
|
||||
format: ""
|
||||
- field: begin
|
||||
note: 计划开始日期
|
||||
range: 2024-01-01-2024-12-31
|
||||
format: ""
|
||||
- field: end
|
||||
note: 计划结束日期
|
||||
range: 2024-06-01-2025-12-31
|
||||
format: ""
|
||||
- field: realBegan
|
||||
note: 实际开始日期
|
||||
range: [0000-00-00{5},2024-01-01-2024-12-31{5}]
|
||||
format: ""
|
||||
- field: realEnd
|
||||
note: 实际结束日期
|
||||
range: [0000-00-00{8},2024-06-01-2024-12-31{2}]
|
||||
format: ""
|
||||
- field: PM
|
||||
note: 项目经理
|
||||
range: [admin,user1,user2,test{7}]
|
||||
format: ""
|
||||
- field: desc
|
||||
note: 项目描述
|
||||
range: [项目描述信息,测试用项目{9}]
|
||||
format: ""
|
||||
- field: acl
|
||||
note: 访问控制
|
||||
range: [open{3},private{4},program{3}]
|
||||
format: ""
|
||||
- field: parent
|
||||
note: 父项目ID
|
||||
range: [0{8},1{1},2{1}]
|
||||
format: ""
|
||||
- field: model
|
||||
note: 项目模型
|
||||
range: [scrum{4},waterfall{3},kanban{3}]
|
||||
format: ""
|
||||
- field: budget
|
||||
note: 预算
|
||||
range: [0{5},10000{2},50000{2},100000{1}]
|
||||
format: ""
|
||||
- field: openedBy
|
||||
note: 创建者
|
||||
range: [admin,user1,user2{8}]
|
||||
format: ""
|
||||
- field: openedDate
|
||||
note: 创建日期
|
||||
range: 2024-01-01 00:00:00-2024-12-31 23:59:59
|
||||
format: YYYY-MM-DD hh:mm:ss
|
||||
- field: lastEditedBy
|
||||
note: 最后编辑者
|
||||
range: [admin{5},user1{3},user2{2}]
|
||||
format: ""
|
||||
- field: lastEditedDate
|
||||
note: 最后编辑日期
|
||||
range: 2024-01-01 00:00:00-2024-12-31 23:59:59
|
||||
format: YYYY-MM-DD hh:mm:ss
|
||||
- field: deleted
|
||||
note: 是否删除
|
||||
range: ['0'{9},'1'{1}]
|
||||
format: ""
|
||||
- field: vision
|
||||
note: 视图类型
|
||||
range: rnd{10}
|
||||
format: ""
|
||||
Reference in New Issue
Block a user