+ [misc] Add unit tests for aiModel::getObjectForPromptById() method
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1095,4 +1095,25 @@ class aiTest
|
||||
|
||||
return empty($schema) ? array() : $schema;
|
||||
}
|
||||
|
||||
/**
|
||||
* Test getObjectForPromptById method.
|
||||
*
|
||||
* @param mixed $promptID
|
||||
* @param mixed $objectId
|
||||
* @access public
|
||||
* @return mixed
|
||||
*/
|
||||
public function getObjectForPromptByIdTest($promptID = null, $objectId = null)
|
||||
{
|
||||
if(empty($promptID)) return false;
|
||||
|
||||
$prompt = $this->objectModel->getPromptById($promptID);
|
||||
if(empty($prompt)) return false;
|
||||
|
||||
$result = $this->objectModel->getObjectForPromptById($prompt, $objectId);
|
||||
if(dao::isError()) return dao::getError();
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
/**
|
||||
|
||||
title=测试 aiModel::getObjectForPromptById();
|
||||
timeout=0
|
||||
cid=0
|
||||
|
||||
- 步骤1:story模块正常情况,返回数组不为空 @~~
|
||||
- 步骤2:task模块正常情况,返回数组不为空 @~~
|
||||
- 步骤3:不存在的prompt ID @false
|
||||
- 步骤4:不存在的object ID @false
|
||||
- 步骤5:deleted状态的prompt @false
|
||||
- 步骤6:product模块测试,返回数组不为空 @~~
|
||||
- 步骤7:bug模块但object不存在 @false
|
||||
|
||||
*/
|
||||
|
||||
// 1. 导入依赖(路径固定,不可修改)
|
||||
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
||||
include dirname(__FILE__, 2) . '/lib/ai.unittest.class.php';
|
||||
|
||||
// 2. zendata数据准备
|
||||
$table = zenData('ai_prompt');
|
||||
$table->id->range('1-10');
|
||||
$table->name->range('story_prompt,task_prompt,bug_prompt,product_prompt,project_prompt,execution_prompt,test_prompt,dev_prompt,pm_prompt,qa_prompt');
|
||||
$table->desc->range('测试描述内容{10}');
|
||||
$table->model->range('0,1,2,3,4,5');
|
||||
$table->module->range('story{2},task{2},bug{2},product{2},project{1},execution{1}');
|
||||
$table->source->range(',story.title,story.spec,,task.name,task.desc,,bug.title,bug.steps,,product.name,product.desc,,project.name,project.desc,,execution.name,execution.desc,');
|
||||
$table->targetForm->range('story.change,task.edit,bug.edit,product.edit,project.edit');
|
||||
$table->purpose->range('测试目的内容{10}');
|
||||
$table->elaboration->range('测试详细说明内容{10}');
|
||||
$table->role->range('测试角色描述{10}');
|
||||
$table->characterization->range('测试角色特征{10}');
|
||||
$table->createdBy->range('admin,system,user1,user2');
|
||||
$table->createdDate->range('`2023-08-10 10:00:00`,`2023-08-11 11:00:00`,`2023-08-12 12:00:00`');
|
||||
$table->status->range('active{9},draft{1}');
|
||||
$table->deleted->range('0{9},1{1}');
|
||||
$table->gen(10);
|
||||
|
||||
$storyTable = zenData('story');
|
||||
$storyTable->id->range('1-10');
|
||||
$storyTable->title->range('用户登录功能,数据导出功能,权限管理功能,报表统计功能,文件上传功能,数据同步功能,权限控制功能,系统监控功能,日志管理功能,配置管理功能');
|
||||
$storyTable->status->range('active{8},draft{2}');
|
||||
$storyTable->gen(10);
|
||||
|
||||
$taskTable = zenData('task');
|
||||
$taskTable->id->range('1-10');
|
||||
$taskTable->name->range('登录接口开发,数据库设计,前端页面开发,单元测试编写,集成测试,性能测试,代码审查,文档编写,部署脚本,监控配置');
|
||||
$taskTable->status->range('wait{5},doing{3},done{2}');
|
||||
$taskTable->gen(10);
|
||||
|
||||
$productTable = zenData('product');
|
||||
$productTable->id->range('1-10');
|
||||
$productTable->name->range('产品A,产品B,产品C,产品D,产品E,产品F,产品G,产品H,产品I,产品J');
|
||||
$productTable->status->range('normal{8},closed{2}');
|
||||
$productTable->gen(10);
|
||||
|
||||
// 3. 用户登录
|
||||
su('admin');
|
||||
|
||||
// 4. 创建测试实例
|
||||
$aiTest = new aiTest();
|
||||
|
||||
// 5. 测试步骤(必须包含至少5个测试步骤)
|
||||
r($aiTest->getObjectForPromptByIdTest(1, 1)) && p() && e('~~'); // 步骤1:story模块正常情况,返回数组不为空
|
||||
r($aiTest->getObjectForPromptByIdTest(3, 2)) && p() && e('~~'); // 步骤2:task模块正常情况,返回数组不为空
|
||||
r($aiTest->getObjectForPromptByIdTest(99, 1)) && p() && e('false'); // 步骤3:不存在的prompt ID
|
||||
r($aiTest->getObjectForPromptByIdTest(1, 999)) && p() && e('false'); // 步骤4:不存在的object ID
|
||||
r($aiTest->getObjectForPromptByIdTest(10, 1)) && p() && e('false'); // 步骤5:deleted状态的prompt
|
||||
r($aiTest->getObjectForPromptByIdTest(7, 1)) && p() && e('~~'); // 步骤6:product模块测试,返回数组不为空
|
||||
r($aiTest->getObjectForPromptByIdTest(5, 999)) && p() && e('false'); // 步骤7:bug模块但object不存在
|
||||
@@ -0,0 +1,91 @@
|
||||
---
|
||||
title: AI Prompt测试数据 - getObjectForPromptById方法
|
||||
desc: 为getObjectForPromptById方法提供测试数据
|
||||
author: Claude AI
|
||||
version: 1.0
|
||||
|
||||
fields:
|
||||
- field: id
|
||||
note: Prompt ID
|
||||
range: 1-10
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: name
|
||||
note: Prompt名称
|
||||
range: story_prompt{1}, task_prompt{1}, bug_prompt{1}, product_prompt{1}, project_prompt{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: desc
|
||||
note: Prompt描述
|
||||
range: 需求润色提示词{2}, 任务优化提示词{2}, 缺陷分析提示词{2}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: model
|
||||
note: 模型ID
|
||||
range: 1-3
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: module
|
||||
note: 模块名称
|
||||
range: story{2}, task{2}, bug{2}, product{1}, project{1}, execution{1}, case{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: source
|
||||
note: 数据源配置
|
||||
range: story.title,story.spec{1}, task.name,task.desc{1}, bug.title,bug.steps{1}, product.name,product.desc{1}, project.name,project.desc{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: targetForm
|
||||
note: 目标表单
|
||||
range: story.edit{2}, task.edit{2}, bug.edit{2}, product.edit{1}, project.edit{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: purpose
|
||||
note: 用途说明
|
||||
range: 优化需求描述{2}, 优化任务信息{2}, 优化缺陷信息{2}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: status
|
||||
note: 状态
|
||||
range: active{8}, draft{2}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: createdBy
|
||||
note: 创建者
|
||||
range: admin{5}, user1{3}, user2{2}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: createdDate
|
||||
note: 创建时间
|
||||
range: 2024-01-01 10:00:00-2024-12-31 23:59:59:1D
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: "YYYY-MM-DD hh:mm:ss"
|
||||
- field: deleted
|
||||
note: 删除状态
|
||||
range: 0{9}, 1{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
@@ -0,0 +1,105 @@
|
||||
---
|
||||
title: Story测试数据 - getObjectForPromptById方法
|
||||
desc: 为story模块的getObjectForPromptById方法提供测试数据
|
||||
author: Claude AI
|
||||
version: 1.0
|
||||
|
||||
fields:
|
||||
- field: id
|
||||
note: Story ID
|
||||
range: 1-10
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: title
|
||||
note: Story标题
|
||||
range: 用户登录功能{1}, 数据导出功能{1}, 权限管理功能{1}, 报表统计功能{1}, 文件上传功能{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: spec
|
||||
note: Story规格说明
|
||||
range: 作为一名用户,我希望能够登录系统{2}, 作为一名管理员,我希望能够导出数据{2}, 作为一名用户,我希望能够上传文件{2}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: verify
|
||||
note: 验收标准
|
||||
range: 1.能够正确登录 2.密码错误时提示{2}, 1.能够导出Excel文件 2.导出速度合理{2}, 1.支持常见文件格式{2}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: type
|
||||
note: Story类型
|
||||
range: story{8}, epic{2}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: pri
|
||||
note: 优先级
|
||||
range: 1{2}, 2{3}, 3{3}, 4{2}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: estimate
|
||||
note: 估算工时
|
||||
range: 1-40:0.5
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: status
|
||||
note: 状态
|
||||
range: draft{2}, active{5}, closed{2}, changed{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: stage
|
||||
note: 阶段
|
||||
range: wait{3}, planned{3}, projected{2}, developing{1}, testing{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: openedBy
|
||||
note: 由谁创建
|
||||
range: admin{3}, user1{3}, user2{2}, user3{2}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: openedDate
|
||||
note: 创建时间
|
||||
range: 2024-01-01 09:00:00-2024-12-31 18:00:00:1D
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: "YYYY-MM-DD hh:mm:ss"
|
||||
- field: product
|
||||
note: 产品ID
|
||||
range: 1{5}, 2{3}, 3{2}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: module
|
||||
note: 模块ID
|
||||
range: 1{3}, 2{3}, 3{2}, 4{2}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: deleted
|
||||
note: 删除状态
|
||||
range: 0{9}, 1{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
@@ -0,0 +1,119 @@
|
||||
---
|
||||
title: Task测试数据 - getObjectForPromptById方法
|
||||
desc: 为task模块的getObjectForPromptById方法提供测试数据
|
||||
author: Claude AI
|
||||
version: 1.0
|
||||
|
||||
fields:
|
||||
- field: id
|
||||
note: Task ID
|
||||
range: 1-10
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: name
|
||||
note: 任务名称
|
||||
range: 登录接口开发{1}, 数据库设计{1}, 前端页面开发{1}, 单元测试编写{1}, 代码审查{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: desc
|
||||
note: 任务描述
|
||||
range: 开发用户登录API接口{2}, 设计用户相关数据表{2}, 开发登录页面UI{2}, 编写单元测试用例{2}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: type
|
||||
note: 任务类型
|
||||
range: devel{4}, test{3}, design{2}, study{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: pri
|
||||
note: 优先级
|
||||
range: 1{2}, 2{4}, 3{3}, 4{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: estimate
|
||||
note: 预计工时
|
||||
range: 1-80:0.5
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: consumed
|
||||
note: 已消耗工时
|
||||
range: 0-40:0.5
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: left
|
||||
note: 剩余工时
|
||||
range: 0-40:0.5
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: status
|
||||
note: 任务状态
|
||||
range: wait{3}, doing{3}, done{2}, pause{1}, cancel{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: assignedTo
|
||||
note: 指派给
|
||||
range: admin{2}, user1{3}, user2{2}, user3{2}, [']{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: openedBy
|
||||
note: 由谁创建
|
||||
range: admin{4}, user1{3}, user2{2}, user3{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: openedDate
|
||||
note: 创建时间
|
||||
range: 2024-01-01 09:00:00-2024-12-31 18:00:00:1D
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: "YYYY-MM-DD hh:mm:ss"
|
||||
- field: estStarted
|
||||
note: 预计开始时间
|
||||
range: 2024-01-01-2024-12-31:1D
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: "YYYY-MM-DD"
|
||||
- field: realStarted
|
||||
note: 实际开始时间
|
||||
range: 2024-01-01-2024-12-31:1D, [null]{3}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: "YYYY-MM-DD"
|
||||
- field: execution
|
||||
note: 执行ID
|
||||
range: 1{4}, 2{3}, 3{2}, 4{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
- field: deleted
|
||||
note: 删除状态
|
||||
range: 0{9}, 1{1}
|
||||
prefix: ""
|
||||
postfix: ""
|
||||
loop: 0
|
||||
format: ""
|
||||
Reference in New Issue
Block a user