Open History to see the last commit
1import { describe, expect, it } from "vite-plus/test";
2
3import { DEFAULT_TERMINAL_ID, TerminalOpenInput } from "@t3tools/contracts";
4import * as Schema from "effect/Schema";
5
6import { getTerminalLabel, nextTerminalId } from "./terminalLabels.ts";
7
8const decodeTerminalOpen = Schema.decodeUnknownSync(TerminalOpenInput);
9
10describe("nextTerminalId", () => {
11 it("skips over taken term-N slots", () => {
12 expect(nextTerminalId([DEFAULT_TERMINAL_ID, "term-2", "term-3"])).toBe("term-4");
13 expect(nextTerminalId([DEFAULT_TERMINAL_ID, "term-3"])).toBe("term-2");
14 expect(nextTerminalId(["term-2", "term-3"])).toBe("term-1");
15 });
16
17 it("avoids unseen sessions when metadata is unavailable and resumes normal numbering", () => {
18 const first = nextTerminalId([], "783c91cc-a413-47c7-8312-c2a5a1f05e40");
19 const second = nextTerminalId([first], "102315fc-ceef-45c4-b978-c4d4947d3c26");
20 expect(first).not.toBe(DEFAULT_TERMINAL_ID);
21 expect(second).not.toBe(first);
22 expect(getTerminalLabel(second)).toBe("Terminal 2");
23 expect(nextTerminalId([first, second])).toBe("term-3");
24 expect(
25 decodeTerminalOpen({
26 threadId: "thread",
27 terminalId: second,
28 cwd: "/workspace",
29 }),
30 ).toMatchObject({ terminalId: second });
31 });
32});