[story#79414,2h] test code for getPromptFields and savePromptFields.

This commit is contained in:
hujunqing
2025-12-02 16:32:16 +08:00
committed by sunhao
parent d16b72970b
commit 7ec7fb300f
5 changed files with 189 additions and 4 deletions
+40 -4
View File
@@ -1400,6 +1400,21 @@ class aiTest
return $result;
}
/**
* Test getPromptFields method.
*
* @param int $promptID
* @access public
* @return mixed
*/
public function getPromptFieldsTest($promptID = null)
{
$result = $this->objectModel->getPromptFields($promptID);
if(dao::isError()) return dao::getError();
return $result;
}
/**
* Test createPrompt method.
*
@@ -1415,6 +1430,27 @@ class aiTest
return $result;
}
/**
* Test savePromptFields method.
*
* @param int $promptID
* @param mixed $data
* @access public
* @return mixed
*/
public function savePromptFieldsTest($promptID = null, $data = null)
{
$this->objectModel->savePromptFields($promptID, $data);
if(dao::isError()) return dao::getError();
$fields = $this->objectModel->dao->select('*')
->from(TABLE_AI_PROMPTFIELD)
->where('appID')->eq($promptID)
->fetchAll();
return count($fields);
}
/**
* Test updatePrompt method.
*
@@ -1677,7 +1713,7 @@ class aiTest
{
// Custom implementation to handle edge cases cleanly
if(empty($form)) return array();
$formPath = explode('.', $form);
if(count($formPath) !== 2) return array();
@@ -1768,7 +1804,7 @@ class aiTest
$reflectionClass = new ReflectionClass('aiModel');
$method = $reflectionClass->getMethod('autoPrependNewline');
$method->setAccessible(true);
$result = $method->invoke(null, $text);
if(dao::isError()) return dao::getError();
@@ -2429,7 +2465,7 @@ class aiTest
public function deleteAssistantTest($assistantId = null)
{
if(empty($assistantId) || $assistantId < 0) return '0';
$result = $this->objectModel->deleteAssistant($assistantId);
if(dao::isError()) return dao::getError();
@@ -2463,7 +2499,7 @@ class aiTest
{
try {
$exception = new AIResponseException($type, $response);
// 验证基本属性设置正确
if($exception->type === $type && $exception->response === $response) {
return '1';
+38
View File
@@ -0,0 +1,38 @@
#!/usr/bin/env php
<?php
/**
title=测试 aiModel::getPromptFields();
timeout=0
cid=0
- 执行aiTest模块的getPromptFieldsTest方法,参数是'1' @5
- 执行aiTest模块的getPromptFieldsTest方法,参数是'2' @5
- 执行aiTest模块的getPromptFieldsTest方法,参数是'999' @2
- 执行aiTest模块的getPromptFieldsTest方法,参数是'3' @5
- 执行aiTest模块的getPromptFieldsTest方法,参数是'0' @3
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/ai.unittest.class.php';
$table = zenData('ai_promptfield');
$table->id->range('1-20');
$table->appID->range('1{5},2{5},3{5},999{2},0{3}');
$table->name->range('字段1,字段2,字段3,字段4,字段5,字段6,字段7,字段8,字段9,字段10,字段11,字段12,字段13,字段14,字段15,字段16,字段17,字段18,字段19,字段20');
$table->type->range('text,textarea,radio,checkbox');
$table->options->range('选项1,选项2,选项3,选项4,选项5,[]{15}');
$table->required->range('1,0');
$table->gen(20);
su('admin');
$aiTest = new aiTest();
r(count($aiTest->getPromptFieldsTest('1'))) && p() && e('5');
r(count($aiTest->getPromptFieldsTest('2'))) && p() && e('5');
r(count($aiTest->getPromptFieldsTest('999'))) && p() && e('2');
r(count($aiTest->getPromptFieldsTest('3'))) && p() && e('5');
r(count($aiTest->getPromptFieldsTest('0'))) && p() && e('3');
+52
View File
@@ -0,0 +1,52 @@
#!/usr/bin/env php
<?php
/**
title=测试 aiModel::savePromptFields();
timeout=0
cid=0
- 执行aiTest模块的savePromptFieldsTest方法,参数是1, $testData1 @2
- 执行aiTest模块的savePromptFieldsTest方法,参数是2, $testData2 @1
- 执行aiTest模块的savePromptFieldsTest方法,参数是3, $testData3 @1
- 执行aiTest模块的savePromptFieldsTest方法,参数是4, $testData4 @0
- 执行aiTest模块的savePromptFieldsTest方法,参数是999, $testData5 @1
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/ai.unittest.class.php';
su('admin');
$aiTest = new aiTest();
$testData1 = new stdClass();
$testData1->fields = array(
(object)array('appID' => 1, 'name' => '字段A', 'type' => 'text', 'options' => null, 'required' => '1'),
(object)array('appID' => 1, 'name' => '字段B', 'type' => 'text', 'options' => null, 'required' => '1')
);
r($aiTest->savePromptFieldsTest(1, $testData1)) && p() && e('2');
$testData2 = new stdClass();
$testData2->fields = array(
(object)array('appID' => 2, 'name' => '字段C', 'type' => 'textarea', 'options' => null, 'required' => '0')
);
r($aiTest->savePromptFieldsTest(2, $testData2)) && p() && e('1');
$testData3 = new stdClass();
$testData3->fields = array(
(object)array('appID' => 3, 'name' => '字段D', 'type' => 'radio', 'options' => array('选项1', '选项2'), 'required' => '1')
);
r($aiTest->savePromptFieldsTest(3, $testData3)) && p() && e('1');
$testData4 = new stdClass();
$testData4->fields = array();
r($aiTest->savePromptFieldsTest(4, $testData4)) && p() && e('0');
$testData5 = new stdClass();
$testData5->fields = array(
(object)array('appID' => 999, 'name' => '字段E', 'type' => 'checkbox', 'options' => array('可选1', '可选2'), 'required' => '0')
);
r($aiTest->savePromptFieldsTest(999, $testData5)) && p() && e('1');
@@ -0,0 +1,29 @@
---
title: getPromptFields方法的测试数据
desc: 用于测试getPromptFields方法的ai_promptfield表数据
author: AI Assistant
fields:
- field: id
note: 字段ID
range: 1-20
- field: appID
note: Prompt ID
range: 1{5},2{5},3{5},999{2},0{3}
- field: name
note: 字段名称
range: 字段A{2},字段B{2},字段C{2},字段D{2},字段E{2},字段F{2},字段G{2},字段H{2},字段I{2},字段J{2}
- field: type
note: 字段类型
range: text{8},textarea{6},radio{3},checkbox{3}
- field: options
note: 选项内容
range: 选项1,选项2,选项3{2},是,否{2},高,中,低{2},必填,可选{2},[]{8}
- field: required
note: 是否必填
range: 1{12},0{8}
@@ -0,0 +1,30 @@
---
title: 保存 Prompt 字段测试数据
desc: 用于测试savePromptFields方法的ai_promptfield表数据
author: AI Assistant
version: 1.0
fields:
- field: id
note: 字段ID
range: 1-20
- field: appID
note: Prompt ID
range: 1{5},2{5},3{5},4{3},5{2}
- field: name
note: 字段名称
range: 字段K{3},字段L{3},字段M{3},字段N{3},字段O{3},字段P{3},字段Q{2}
- field: type
note: 字段类型
range: text{8},textarea{6},radio{4},checkbox{2}
- field: options
note: 选项内容
range: '[]{10}, 选项A,选项B{3}, 选项C,选项D,选项E{2}, 是,否{2}, 高级,中级,初级{3}'
- field: required
note: 是否必填
range: '1'{10}, '0'{10}