返回 DeepSeek-Reasonix
session-title-operation.test.ts
根目录 / desktop / frontend / src / __tests__ / session-title-operation.test.ts
1 import assert from "node:assert/strict";
2 import { sessionTitleTarget, sessionTitleErrorKey, sessionTitleSelector } from "../lib/sessionTitleOperation";
3 import type { ProjectNode } from "../lib/types";
4
5 const first: ProjectNode = { key: "first", kind: "topic", label: "First", topicId: "shared", sessionPath: "legacy", session: { hostId: "local", sessionId: "first" } };
6 const second = { ...first, key: "second", session: { hostId: "local", sessionId: "second" } };
7 assert.equal(sessionTitleTarget(first), "session-id:first");
8 assert.notEqual(sessionTitleTarget(first), sessionTitleTarget(second));
9 assert.equal(sessionTitleTarget({ ...first, session: undefined }), "legacy");
10 assert.equal(sessionTitleTarget({ ...first, session: undefined, sessionPath: undefined }), "shared");
11 assert.deepEqual(sessionTitleSelector("session-id:first"), { ref: { hostId: "local", sessionId: "first" } });
12 assert.deepEqual(sessionTitleSelector("/tmp/session.jsonl"), { sessionPath: "/tmp/session.jsonl" });
13 assert.deepEqual(sessionTitleSelector("shared"), { topicId: "shared" });
14 assert.equal(sessionTitleErrorKey(new Error("session_operation:title_conflict:internal details")), "projectTree.sessionError.titleConflict");
15 assert.equal(sessionTitleErrorKey({ data: { sessionCode: "provider_unavailable" }, message: "secret provider body" }), "projectTree.sessionError.providerUnavailable");
16 for (const error of [new Error("failed to read /private/fixture/session"), "lease owner controller test-owner", "provider secret test-token"]) {
17 assert.equal(sessionTitleErrorKey(error), "projectTree.sessionError.failed");
18 }
19 console.log("session title target precedence, sibling isolation and sanitized errors passed");
20
20 lines TYPESCRIPT