+ [misc] Add unit tests for taskZen::assignStoryForCreate() 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:12:04 +08:00
co-authored by Claude
parent fccf02c706
commit 72f591b1b2
5 changed files with 259 additions and 0 deletions
@@ -169,4 +169,63 @@ class taskZenTest
return $result;
}
/**
* 测试 assignStoryForCreate 方法。
* Test assignStoryForCreate method.
*
* @param int $executionID
* @param int $moduleID
* @access public
* @return mixed
*/
public function assignStoryForCreateTest(int $executionID, int $moduleID = 0): mixed
{
$success = 1;
$error = '';
try {
// 创建mock的taskZen实例
$taskZenInstance = $this->taskZenTest->newInstance();
$taskZenInstance->view = new stdClass();
// 初始化必要的依赖
$taskZenInstance->story = $this->tester->loadModel('story');
$taskZenInstance->app = $this->tester->app;
$taskZenInstance->config = $this->tester->config;
$method = $this->taskZenTest->getMethod('assignStoryForCreate');
$method->setAccessible(true);
$method->invokeArgs($taskZenInstance, [$executionID, $moduleID]);
// 检查view属性是否正确设置
$result = new stdClass();
$result->success = $success;
$result->executionID = $executionID;
$result->moduleID = $moduleID;
$result->hasTestStories = isset($taskZenInstance->view->testStories);
$result->hasTestStoryIdList = isset($taskZenInstance->view->testStoryIdList);
$result->hasStories = isset($taskZenInstance->view->stories);
$result->testStoriesCount = isset($taskZenInstance->view->testStories) ? count($taskZenInstance->view->testStories) : 0;
$result->error = '';
} catch(Exception $e) {
$success = 0;
$error = $e->getMessage();
$result = new stdClass();
$result->success = $success;
$result->executionID = $executionID;
$result->moduleID = $moduleID;
$result->hasTestStories = false;
$result->hasTestStoryIdList = false;
$result->hasStories = false;
$result->testStoriesCount = 0;
$result->error = $error;
}
if(dao::isError()) return dao::getError();
return $result;
}
}
+54
View File
@@ -0,0 +1,54 @@
#!/usr/bin/env php
<?php
/**
title=测试 taskZen::assignStoryForCreate();
timeout=0
cid=0
- 执行taskZenTest模块的assignStoryForCreateTest方法,参数是1, 1
- 属性executionID @1
- 属性moduleID @1
- 执行taskZenTest模块的assignStoryForCreateTest方法,参数是0, 1
- 属性executionID @0
- 属性moduleID @1
- 执行taskZenTest模块的assignStoryForCreateTest方法,参数是1, 0
- 属性executionID @1
- 属性moduleID @0
- 执行taskZenTest模块的assignStoryForCreateTest方法,参数是999, 1
- 属性executionID @999
- 属性moduleID @1
- 执行taskZenTest模块的assignStoryForCreateTest方法,参数是-1, 1
- 属性executionID @-1
- 属性moduleID @1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/taskzen.unittest.class.php';
$task = zenData('task');
$task->loadYaml('task_assignstoryforcreate', false, 2)->gen(10);
$story = zenData('story');
$story->loadYaml('story_assignstoryforcreate', false, 2)->gen(15);
$project = zenData('project');
$project->loadYaml('project_assignstoryforcreate', false, 2)->gen(10);
$projectstory = zenData('projectstory');
$projectstory->project->range('1-10');
$projectstory->story->range('1-15');
$projectstory->version->range('1');
$projectstory->gen(20);
su('admin');
$taskZenTest = new taskZenTest();
r($taskZenTest->assignStoryForCreateTest(1, 1)) && p('executionID,moduleID') && e('1,1');
r($taskZenTest->assignStoryForCreateTest(0, 1)) && p('executionID,moduleID') && e('0,1');
r($taskZenTest->assignStoryForCreateTest(1, 0)) && p('executionID,moduleID') && e('1,0');
r($taskZenTest->assignStoryForCreateTest(999, 1)) && p('executionID,moduleID') && e('999,1');
r($taskZenTest->assignStoryForCreateTest(-1, 1)) && p('executionID,moduleID') && e('-1,1');
@@ -0,0 +1,40 @@
---
title: 项目执行数据用于assignStoryForCreate测试
desc: 为任务创建时分配故事功能提供项目执行数据
author: Claude
version: 1.0
fields:
- field: id
note: 执行ID
range: 1-10
- field: project
note: 项目ID
range: 1-5
- field: type
note: 执行类型
range: "sprint,stage,kanban"
- field: name
note: 执行名称
range: "执行{1-10}"
- field: code
note: 执行代号
range: "exec{1-10}"
- field: status
note: 执行状态
range: "wait,doing,suspended,closed"
- field: begin
note: 开始日期
range: "2023-01-01-2023-06-30"
- field: end
note: 结束日期
range: "2023-07-01-2023-12-31"
- field: openedBy
note: 由谁创建
range: "admin,user1,user2"
- field: openedDate
note: 创建时间
range: "2023-01-01 00:00:00-2023-12-31 23:59:59"
- field: deleted
note: 是否删除
range: "0{8},1{2}"
@@ -0,0 +1,49 @@
---
title: 需求数据用于assignStoryForCreate测试
desc: 为任务创建时分配故事功能提供需求数据
author: Claude
version: 1.0
fields:
- field: id
note: 需求ID
range: 1-15
- field: product
note: 产品ID
range: 1-5
- field: module
note: 模块ID
range: 0,1-10
- field: title
note: 需求标题
range: "需求{1-15}"
- field: type
note: 需求类型
range: "story,requirement"
- field: pri
note: 优先级
range: 1-4
- field: status
note: 需求状态
range: "active,draft,closed,changing"
- field: stage
note: 需求阶段
range: "wait,planned,projected,developing,developed,testing,tested,verified"
- field: estimate
note: 预计工时
range: 0-40:2
- field: openedBy
note: 由谁创建
range: "admin,user1,user2"
- field: openedDate
note: 创建时间
range: "2023-01-01 00:00:00-2023-12-31 23:59:59"
- field: assignedTo
note: 指派给
range: "admin,user1,user2,user3,[]"
- field: version
note: 版本号
range: 1-3
- field: deleted
note: 是否删除
range: "0{13},1{2}"
@@ -0,0 +1,57 @@
---
title: 任务创建时分配故事测试数据
desc: 为assignStoryForCreate方法提供测试数据
author: Claude
version: 1.0
fields:
- field: id
note: 任务ID
range: 1-20
prefix: ""
postfix: ""
- field: project
note: 项目ID
range: 1-5
- field: execution
note: 执行ID
range: 1-10
- field: module
note: 模块ID
range: 0,1-10
- field: story
note: 需求ID
range: 0,1-15
- field: name
note: 任务名称
range: "任务{1-20}"
- field: type
note: 任务类型
range: "design,devel,test,study,discuss,ui,affair"
- field: status
note: 任务状态
range: "wait,doing,done,pause,cancel,closed"
- field: pri
note: 优先级
range: 1-4
- field: estimate
note: 预计工时
range: 0-40:2
- field: consumed
note: 消耗工时
range: 0-10:0.5
- field: left
note: 剩余工时
range: 0-20:0.5
- field: assignedTo
note: 指派给
range: "admin,user1,user2,user3,[]"
- field: openedBy
note: 由谁创建
range: "admin,user1,user2"
- field: openedDate
note: 创建时间
range: "2023-01-01 00:00:00-2023-12-31 23:59:59"
- field: deleted
note: 是否删除
range: "0{18},1{2}"