Files
opsxdb/src/ObjectTree.render.test.tsx
T
logan 2c0bfafd8d 同步完整源码至远程:扁平化重构现状 + 未入库源文件
- 补入库:server/internal/db/dump.go、redis 分页/扫描预算测试、opsxdb-mcp main_test、
  packages/opsxdb-mcp package-lock、docs 审计与对比文档等 37 个新文件
- 含结构扁平化进行中的 80 处修改与 155 处旧结构删除(server/ src/ src-tauri/ 为当前有效源)
- 构建产物(bin/target/dist)与签名私钥仍按规则排除
2026-10-16 03:47:33 +08:00

37 lines
1.4 KiB
TypeScript

import { afterEach, expect, it } from "vitest";
import { renderToStaticMarkup } from "react-dom/server";
import { ObjectTree } from "./ObjectTree";
import { useWorkspaceStore } from "./store";
const initial = useWorkspaceStore.getState();
const serverState = useWorkspaceStore.getInitialState();
const initialServer = {
connections: serverState.connections,
activeConnectionId: serverState.activeConnectionId,
tree: serverState.tree,
treeLoading: serverState.treeLoading,
sidebarFilter: serverState.sidebarFilter,
};
afterEach(() => {
Object.assign(serverState, initialServer);
useWorkspaceStore.setState(initial, true);
});
it("展开 Redis DB 时渲染 Key,而不是把 JSX 内的源码当文字展示", () => {
const state = {
connections: [{ id: "redis-local", name: "Redis 连接", driver: "redis", host: "127.0.0.1", port: 6379, user: "", password: "", database: "0" }],
activeConnectionId: "redis-local",
tree: [{ name: "0", kind: "database", loaded: true, children: [{ name: "USER:1", kind: "key", type: "string", ttl: -1 }] }],
treeLoading: false,
sidebarFilter: "",
} as const;
Object.assign(serverState, state);
const html = renderToStaticMarkup(<ObjectTree />);
expect(html).toContain("USER:1");
expect(html).toContain("搜索 DB0 的 Key");
expect(html).not.toContain("renderRedisNodes(");
expect(html).not.toContain("服务端已按 pattern SCAN");
});