Files
modelstudioai__cli/packages/commands/tests/e2e/knowledge/knowledge-kb-update.e2e.test.ts
T
zeyu.fz 43abf0aca5 feat(knowledge): 新增知识库管理及用户旅程端到端测试支持
- 增加test:journey脚本,覆盖知识库跨命令全链路用户旅程测试
- 在文档中新增Journey E2E章节,详细说明用户旅程测试定位及断言机制
- 完善commands模块,新增知识库相关命令包括知识库列表、信息、创建、更新、删除
- 新增知识库文档相关命令,如文档列表、状态、上传、删除、打标签及OSS导入
- 添加知识服务管理命令,支持列表、创建、更新、部署、删除及复制
- 支持知识块增删查改命令,完善知识点的灵活操作能力
- 实现数据中心分类管理命令,支持分类增删查操作
- 优化knowledge chat命令,增加workspace-id统一解析及agent-version版本控制
- 重构与知识库相关命令的导出与注册,完善CLI整体能力覆盖
- 新增命令详尽的帮助文档,包含参数说明、使用示例及错误边界
- 实现批量删除知识块的自动分批处理逻辑,易于操作大规模数据
- 添加必要的输入校验与安全提示,确保操作安全且符合规范
2026-08-05 12:02:32 +08:00

116 lines
3.3 KiB
TypeScript

import { describe, expect, test } from "vite-plus/test";
import { parseStdoutJson, runCommandE2e } from "../helpers.ts";
import { KNOWLEDGE_KB_UPDATE_ROUTES } from "../topic-routes.ts";
describe("e2e: knowledge kb update", () => {
test("--help 展示 flags", async () => {
const { stderr, exitCode } = await runCommandE2e(KNOWLEDGE_KB_UPDATE_ROUTES, [
"knowledge",
"update",
"--help",
]);
expect(exitCode, stderr).toBe(0);
expect(stderr).toMatch(/--index-id/i);
expect(stderr).toMatch(/--name/i);
expect(stderr).toMatch(/--description/i);
expect(stderr).toMatch(/--rerank-min-score/i);
});
test("缺 --index-id 报 USAGE (2)", async () => {
const { exitCode } = await runCommandE2e(KNOWLEDGE_KB_UPDATE_ROUTES, [
"knowledge",
"update",
"--description",
"x",
"--workspace-id",
"ws_test",
]);
expect(exitCode).toBe(2);
});
test("无修改项报 USAGE (2) 'Nothing to update'", async () => {
const { stderr, exitCode } = await runCommandE2e(KNOWLEDGE_KB_UPDATE_ROUTES, [
"knowledge",
"update",
"--index-id",
"idx_test",
"--workspace-id",
"ws_test",
]);
expect(exitCode).toBe(2);
expect(stderr).toMatch(/nothing to update/i);
});
test("--rerank-min-score 1.5 报 USAGE (2)", async () => {
const { exitCode } = await runCommandE2e(KNOWLEDGE_KB_UPDATE_ROUTES, [
"knowledge",
"update",
"--index-id",
"idx_test",
"--rerank-min-score",
"1.5",
"--workspace-id",
"ws_test",
]);
expect(exitCode).toBe(2);
});
test("--name 21 字符报 USAGE (2)", async () => {
const { exitCode } = await runCommandE2e(KNOWLEDGE_KB_UPDATE_ROUTES, [
"knowledge",
"update",
"--index-id",
"idx_test",
"--name",
"x".repeat(21),
"--workspace-id",
"ws_test",
]);
expect(exitCode).toBe(2);
});
test("--dry-run 断言 body 键名为 id (本接口坑位)", async () => {
const { stdout, stderr, exitCode } = await runCommandE2e(KNOWLEDGE_KB_UPDATE_ROUTES, [
"knowledge",
"update",
"--index-id",
"idx_test",
"--description",
"new desc",
"--workspace-id",
"ws_test",
"--dry-run",
"--output",
"json",
]);
expect(exitCode, stderr).toBe(0);
const data = parseStdoutJson<{ endpoint?: string; request?: Record<string, unknown> }>(stdout);
expect(data.endpoint).toMatch(/api\/v1\/indices\/rag\/index\/update/);
expect(data.request?.id).toBe("idx_test");
expect(data.request).not.toHaveProperty("index_id");
expect(data.request?.description).toBe("new desc");
});
test("--dry-run 断言 rerankMinScore body 键名映射", async () => {
const { stdout, stderr, exitCode } = await runCommandE2e(KNOWLEDGE_KB_UPDATE_ROUTES, [
"knowledge",
"update",
"--index-id",
"idx_test",
"--rerank-min-score",
"0.3",
"--workspace-id",
"ws_test",
"--dry-run",
"--output",
"json",
]);
expect(exitCode, stderr).toBe(0);
const data = parseStdoutJson<{ request?: Record<string, unknown> }>(stdout);
expect(data.request?.rerankMinScore).toBe(0.3);
});
});
// Live coverage: the kb delete self-cleaning chain (knowledge-kb-delete.e2e.test.ts)
// runs a live update step between create and delete.