* [test] add unit test for zai model.

This commit is contained in:
sunhao
2025-10-09 13:34:49 +08:00
parent 7412330f5c
commit 466f5f5e65
3 changed files with 132 additions and 0 deletions
@@ -59,4 +59,33 @@ class zaiTest
return true;
}
/**
* Test getVectorizedInfo method.
*
* @access public
* @return object
*/
public function getVectorizedInfoTest()
{
$result = $this->objectModel->getVectorizedInfo();
if(dao::isError()) return dao::getError();
return $result;
}
/**
* Test setVectorizedInfo method.
*
* @param object $info
* @access public
* @return mixed
*/
public function setVectorizedInfoTest($info)
{
$this->objectModel->setVectorizedInfo($info);
if(dao::isError()) return dao::getError();
return true;
}
}
@@ -0,0 +1,47 @@
#!/usr/bin/env php
<?php
/**
title=测试 zaiModel::getVectorizedInfo();
cid=0
- 测试获取不存在的向量化信息 >> 期望返回默认对象
- 测试默认向量化信息的状态字段 >> 期望状态为disabled
- 测试默认向量化信息的key字段 >> 期望key为空字符串
- 测试默认向量化信息的同步计数字段 >> 期望计数为0
- 测试设置向量化信息后获取 >> 期望返回设置的信息
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/zai.unittest.class.php';
zenData('config')->gen(0);
su('admin');
global $tester;
$zai = new zaiTest();
/* 测试获取不存在的向量化信息 */
r($zai->getVectorizedInfoTest()) && p('status') && e('disabled'); // 测试获取不存在的向量化信息
/* 测试默认向量化信息的各个字段 */
r($zai->getVectorizedInfoTest()) && p('key') && e('~~'); // 测试默认向量化信息的key字段
r($zai->getVectorizedInfoTest()) && p('syncedCount') && e('0'); // 测试默认向量化信息的同步计数字段
r($zai->getVectorizedInfoTest()) && p('syncFailedCount') && e('0'); // 测试默认向量化信息的同步计数字段
/* 设置向量化信息后再获取 */
$vectorizedInfo = new stdClass();
$vectorizedInfo->key = 'testvectorkey123';
$vectorizedInfo->status = 'enabled';
$vectorizedInfo->syncedTime = time();
$vectorizedInfo->syncedCount = 100;
$vectorizedInfo->syncFailedCount = 5;
$tester->loadModel('setting')->setItem('system.zai.kb.systemVectorization', json_encode($vectorizedInfo));
r($zai->getVectorizedInfoTest()) && p('key,status,syncedCount,syncFailedCount') && e('testvectorkey123,enabled,100,5'); // 测试设置向量化信息后获取
@@ -0,0 +1,56 @@
#!/usr/bin/env php
<?php
/**
title=测试 zaiModel::setVectorizedInfo();
cid=0
- 测试设置对象类型的向量化信息 >> 期望正确保存
- 测试设置字符串类型的向量化信息 >> 期望正确保存
- 测试设置后验证信息已保存 >> 期望能够正确读取
- 测试设置空对象的向量化信息 >> 期望正确保存空对象
- 测试设置复杂对象的向量化信息 >> 期望正确保存复杂数据
*/
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/zai.unittest.class.php';
zenData('config')->gen(0);
su('admin');
global $tester;
$zai = new zaiTest();
/* 测试设置对象类型的向量化信息 */
$vectorInfo1 = new stdClass();
$vectorInfo1->key = 'vectorkey001';
$vectorInfo1->status = 'active';
$vectorInfo1->syncedCount = 50;
r($zai->setVectorizedInfoTest($vectorInfo1)) && p() && e('1'); // 测试设置对象类型的向量化信息
/* 验证设置后的结果 */
r($zai->getVectorizedInfoTest()) && p('key,status,syncedCount') && e('vectorkey001,active,50'); // 测试设置后验证信息已保存
/* 测试设置字符串类型的向量化信息 */
$vectorInfoJson = '{"key":"vectorkey002","status":"inactive","syncedCount":25}';
r($zai->setVectorizedInfoTest($vectorInfoJson)) && p() && e('1'); // 测试设置字符串类型的向量化信息
/* 验证字符串设置后的结果 */
r($zai->getVectorizedInfoTest()) && p('key,status,syncedCount') && e('vectorkey002,inactive,25'); // 测试设置后验证信息已保存
/* 测试设置空对象 */
$emptyInfo = new stdClass();
r($zai->setVectorizedInfoTest($emptyInfo)) && p() && e('1'); // 测试设置空对象的向量化信息
/* 测试设置复杂对象 */
$complexInfo = new stdClass();
$complexInfo->key = 'complexkey999';
$complexInfo->status = 'processing';
$complexInfo->syncedTime = 1640995200;
$complexInfo->syncDetails = new stdClass();
$complexInfo->syncDetails->lastSync = '2022-01-01';
$complexInfo->syncDetails->errors = array('error1', 'error2');
r($zai->setVectorizedInfoTest($complexInfo)) && p() && e('1'); // 测试设置复杂对象的向量化信息