59 lines
1.6 KiB
TypeScript
59 lines
1.6 KiB
TypeScript
|
|
import assert from "node:assert/strict";
|
||
|
|
import test from "node:test";
|
||
|
|
|
||
|
|
import { terminalPropsAreEqual } from "./terminalMemo.ts";
|
||
|
|
import type { TerminalProps } from "./terminalHelpers.ts";
|
||
|
|
|
||
|
|
const baseProps = {
|
||
|
|
host: {},
|
||
|
|
keys: [],
|
||
|
|
identities: [],
|
||
|
|
snippets: [],
|
||
|
|
isVisible: true,
|
||
|
|
fontFamilyId: "default",
|
||
|
|
fontSize: 14,
|
||
|
|
terminalTheme: {},
|
||
|
|
sessionId: "session-1",
|
||
|
|
showSelectionAIAction: true,
|
||
|
|
} as unknown as TerminalProps;
|
||
|
|
|
||
|
|
test("terminal memo refreshes when pane visibility changes", () => {
|
||
|
|
// Solo tab switches only flip isVisible. Skipping that comparison leaves
|
||
|
|
// isVisibleRef stale and skips tab-return recovery (#1985).
|
||
|
|
assert.equal(
|
||
|
|
terminalPropsAreEqual(baseProps, { ...baseProps, isVisible: false }),
|
||
|
|
false,
|
||
|
|
);
|
||
|
|
});
|
||
|
|
|
||
|
|
test("terminal memo refreshes when selection AI action visibility changes", () => {
|
||
|
|
assert.equal(
|
||
|
|
terminalPropsAreEqual(baseProps, { ...baseProps, showSelectionAIAction: false }),
|
||
|
|
false,
|
||
|
|
);
|
||
|
|
});
|
||
|
|
|
||
|
|
test("terminal memo refreshes when restored local shell type changes", () => {
|
||
|
|
assert.equal(
|
||
|
|
terminalPropsAreEqual(baseProps, { ...baseProps, shellType: "powershell" }),
|
||
|
|
false,
|
||
|
|
);
|
||
|
|
});
|
||
|
|
|
||
|
|
test("terminal memo refreshes when a popup vault finishes hydrating", () => {
|
||
|
|
assert.equal(
|
||
|
|
terminalPropsAreEqual(baseProps, { ...baseProps, vaultInitializedOverride: true }),
|
||
|
|
false,
|
||
|
|
);
|
||
|
|
});
|
||
|
|
|
||
|
|
test("terminal memo refreshes when terminal context reader callback changes", () => {
|
||
|
|
assert.equal(
|
||
|
|
terminalPropsAreEqual(baseProps, {
|
||
|
|
...baseProps,
|
||
|
|
onTerminalContextReaderChange: () => {},
|
||
|
|
}),
|
||
|
|
false,
|
||
|
|
);
|
||
|
|
});
|