From 7ec7fb300fb61cae4fd85dac9b6f77e63a9d8869 Mon Sep 17 00:00:00 2001 From: hujunqing Date: Tue, 18 Nov 2025 08:26:41 +0000 Subject: [PATCH] [story#79414,2h] test code for getPromptFields and savePromptFields. --- module/ai/test/lib/ai.unittest.class.php | 44 ++++++++++++++-- module/ai/test/model/getpromptfields.php | 38 ++++++++++++++ module/ai/test/model/savepromptfields.php | 52 +++++++++++++++++++ .../yaml/ai_promptfield_getpromptfields.yaml | 29 +++++++++++ .../yaml/ai_promptfield_savepromptfields.yaml | 30 +++++++++++ 5 files changed, 189 insertions(+), 4 deletions(-) create mode 100644 module/ai/test/model/getpromptfields.php create mode 100644 module/ai/test/model/savepromptfields.php create mode 100644 module/ai/test/model/yaml/ai_promptfield_getpromptfields.yaml create mode 100644 module/ai/test/model/yaml/ai_promptfield_savepromptfields.yaml diff --git a/module/ai/test/lib/ai.unittest.class.php b/module/ai/test/lib/ai.unittest.class.php index 4d70fe43b8..45645683be 100755 --- a/module/ai/test/lib/ai.unittest.class.php +++ b/module/ai/test/lib/ai.unittest.class.php @@ -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'; diff --git a/module/ai/test/model/getpromptfields.php b/module/ai/test/model/getpromptfields.php new file mode 100644 index 0000000000..60c1c1edbd --- /dev/null +++ b/module/ai/test/model/getpromptfields.php @@ -0,0 +1,38 @@ +#!/usr/bin/env php +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'); diff --git a/module/ai/test/model/savepromptfields.php b/module/ai/test/model/savepromptfields.php new file mode 100644 index 0000000000..ff973e8e3f --- /dev/null +++ b/module/ai/test/model/savepromptfields.php @@ -0,0 +1,52 @@ +#!/usr/bin/env php +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'); diff --git a/module/ai/test/model/yaml/ai_promptfield_getpromptfields.yaml b/module/ai/test/model/yaml/ai_promptfield_getpromptfields.yaml new file mode 100644 index 0000000000..51f7ebb5d3 --- /dev/null +++ b/module/ai/test/model/yaml/ai_promptfield_getpromptfields.yaml @@ -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} diff --git a/module/ai/test/model/yaml/ai_promptfield_savepromptfields.yaml b/module/ai/test/model/yaml/ai_promptfield_savepromptfields.yaml new file mode 100644 index 0000000000..fa2f054258 --- /dev/null +++ b/module/ai/test/model/yaml/ai_promptfield_savepromptfields.yaml @@ -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}