106 lines
4.9 KiB
PHP
106 lines
4.9 KiB
PHP
|
|
#!/usr/bin/env php
|
|||
|
|
<?php
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
|
|||
|
|
title=测试 zaiModel->searchKnowledgeChunks();
|
|||
|
|
timeout=0
|
|||
|
|
cid=0
|
|||
|
|
|
|||
|
|
- 测试没有ZAI设置时搜索知识库块 @0
|
|||
|
|
- 测试设置ZAI配置后搜索知识库块(基本查询) @array
|
|||
|
|
- 测试搜索知识库块并指定limit参数 @array
|
|||
|
|
- 测试搜索知识库块并指定minSimilarity参数 @array
|
|||
|
|
- 测试搜索知识库块并使用filter过滤条件 @array
|
|||
|
|
- 测试搜索知识库块返回空数组(API失败) @0
|
|||
|
|
- 测试搜索知识库块使用不同的collection @array
|
|||
|
|
- 测试搜索知识库块使用复杂的filter条件 @array
|
|||
|
|
- 测试搜索知识库块使用空查询字符串 @array
|
|||
|
|
- 测试搜索知识库块使用最小相似度0.5 @array
|
|||
|
|
- 测试搜索知识库块使用最大limit值 @array
|
|||
|
|
- 测试搜索知识库块使用多个filter条件 @array
|
|||
|
|
|
|||
|
|
*/
|
|||
|
|
include dirname(__FILE__, 5) . '/test/lib/init.php';
|
|||
|
|
include dirname(__FILE__, 2) . '/lib/model.class.php';
|
|||
|
|
|
|||
|
|
zenData('config')->gen(0);
|
|||
|
|
zenData('user')->gen(1);
|
|||
|
|
|
|||
|
|
su('admin');
|
|||
|
|
|
|||
|
|
global $tester;
|
|||
|
|
$zai = new zaiModelTest();
|
|||
|
|
|
|||
|
|
/* 测试没有ZAI设置时搜索知识库块 */
|
|||
|
|
$result1 = $zai->searchKnowledgeChunksTest('测试查询', 'test-collection', array());
|
|||
|
|
r(empty($result1) ? 0 : count($result1)) && p() && e('0'); // 测试没有ZAI设置时搜索知识库块
|
|||
|
|
|
|||
|
|
/* 设置ZAI配置 */
|
|||
|
|
$setting = new stdClass();
|
|||
|
|
$setting->host = 'testhost.com';
|
|||
|
|
$setting->port = 8080;
|
|||
|
|
$setting->appID = 'testappid123';
|
|||
|
|
$setting->token = 'testtoken123';
|
|||
|
|
$setting->adminToken = 'testadmintoken123';
|
|||
|
|
$tester->loadModel('setting')->setItem('system.zai.global.setting', json_encode($setting));
|
|||
|
|
|
|||
|
|
/* 测试设置ZAI配置后搜索知识库块(基本查询) */
|
|||
|
|
// 注意:由于没有真实的ZAI API服务器,这些测试会因为网络调用失败
|
|||
|
|
// 但我们可以验证方法的逻辑执行和参数处理
|
|||
|
|
$result2 = $zai->searchKnowledgeChunksTest('如何使用禅道', 'zentao_kb', array());
|
|||
|
|
r(is_array($result2) ? 'array' : 'not_array') && p() && e('array'); // 测试设置ZAI配置后搜索知识库块(基本查询)
|
|||
|
|
|
|||
|
|
/* 测试搜索知识库块并指定limit参数 */
|
|||
|
|
$result3 = $zai->searchKnowledgeChunksTest('需求管理', 'zentao_kb', array(), 10);
|
|||
|
|
r(is_array($result3) ? 'array' : 'not_array') && p() && e('array'); // 测试搜索知识库块并指定limit参数
|
|||
|
|
|
|||
|
|
/* 测试搜索知识库块并指定minSimilarity参数 */
|
|||
|
|
$result4 = $zai->searchKnowledgeChunksTest('缺陷跟踪', 'zentao_kb', array(), 20, 0.9);
|
|||
|
|
r(is_array($result4) ? 'array' : 'not_array') && p() && e('array'); // 测试搜索知识库块并指定minSimilarity参数
|
|||
|
|
|
|||
|
|
/* 测试搜索知识库块并使用filter过滤条件 */
|
|||
|
|
$filter = array('objectType' => 'story');
|
|||
|
|
$result5 = $zai->searchKnowledgeChunksTest('用户故事', 'zentao_kb', $filter);
|
|||
|
|
r(is_array($result5) ? 'array' : 'not_array') && p() && e('array'); // 测试搜索知识库块并使用filter过滤条件
|
|||
|
|
|
|||
|
|
/* 测试搜索知识库块返回空数组(API失败) */
|
|||
|
|
// 由于没有真实服务器,API调用会失败,应该返回空数组
|
|||
|
|
$result6 = $zai->searchKnowledgeChunksTest('测试', 'invalid_collection', array());
|
|||
|
|
r(empty($result6) ? 0 : count($result6)) && p() && e('0'); // 测试搜索知识库块返回空数组(API失败)
|
|||
|
|
|
|||
|
|
/* 测试搜索知识库块使用不同的collection */
|
|||
|
|
$result7 = $zai->searchKnowledgeChunksTest('项目管理', 'project_kb', array());
|
|||
|
|
r(is_array($result7) ? 'array' : 'not_array') && p() && e('array'); // 测试搜索知识库块使用不同的collection
|
|||
|
|
|
|||
|
|
/* 测试搜索知识库块使用复杂的filter条件 */
|
|||
|
|
$complexFilter = array(
|
|||
|
|
'objectType' => 'bug',
|
|||
|
|
'status' => 'active',
|
|||
|
|
'product' => 1
|
|||
|
|
);
|
|||
|
|
$result8 = $zai->searchKnowledgeChunksTest('如何修复bug', 'zentao_kb', $complexFilter);
|
|||
|
|
r(is_array($result8) ? 'array' : 'not_array') && p() && e('array'); // 测试搜索知识库块使用复杂的filter条件
|
|||
|
|
|
|||
|
|
/* 测试搜索知识库块使用空查询字符串 */
|
|||
|
|
$result9 = $zai->searchKnowledgeChunksTest('', 'zentao_kb', array());
|
|||
|
|
r(is_array($result9) ? 'array' : 'not_array') && p() && e('array'); // 测试搜索知识库块使用空查询字符串
|
|||
|
|
|
|||
|
|
/* 测试搜索知识库块使用最小相似度0.5 */
|
|||
|
|
$result10 = $zai->searchKnowledgeChunksTest('测试用例', 'zentao_kb', array(), 20, 0.5);
|
|||
|
|
r(is_array($result10) ? 'array' : 'not_array') && p() && e('array'); // 测试搜索知识库块使用最小相似度0.5
|
|||
|
|
|
|||
|
|
/* 测试搜索知识库块使用最大limit值 */
|
|||
|
|
$result11 = $zai->searchKnowledgeChunksTest('文档管理', 'zentao_kb', array(), 100);
|
|||
|
|
r(is_array($result11) ? 'array' : 'not_array') && p() && e('array'); // 测试搜索知识库块使用最大limit值
|
|||
|
|
|
|||
|
|
/* 测试搜索知识库块使用多个filter条件 */
|
|||
|
|
$multiFilter = array(
|
|||
|
|
'objectType' => 'doc',
|
|||
|
|
'product' => 1,
|
|||
|
|
'lib' => 2,
|
|||
|
|
'type' => 'text'
|
|||
|
|
);
|
|||
|
|
$result12 = $zai->searchKnowledgeChunksTest('API文档', 'zentao_kb', $multiFilter, 15, 0.85);
|
|||
|
|
r(is_array($result12) ? 'array' : 'not_array') && p() && e('array'); // 测试搜索知识库块使用多个filter条件
|