67adf93b47
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
29 lines
1.3 KiB
TypeScript
29 lines
1.3 KiB
TypeScript
/**
|
|
* agent-settings-page.tsx resolveTabKey unit tests: the settings page's `?tab=` deep link
|
|
* narrows an untrusted query value against the live TABS keys — a known key passes through,
|
|
* anything else (absent, empty, unknown, wrong casing) falls back to the default — pinned so
|
|
* the validation stays dynamic and newly added tabs deep-link without a hardcoded key list.
|
|
*/
|
|
import { describe, expect, it } from "vitest";
|
|
import { resolveTabKey } from "../src/features/agents/agent-settings-page";
|
|
|
|
const TABS = [{ key: "overview" }, { key: "tools" }, { key: "vault" }] as const;
|
|
|
|
describe("resolveTabKey", () => {
|
|
it("passes a known tab key through", () => {
|
|
expect(resolveTabKey("tools", TABS, "overview")).toBe("tools");
|
|
expect(resolveTabKey("vault", TABS, "overview")).toBe("vault");
|
|
});
|
|
|
|
it("falls back for absent, empty, unknown, or wrong-cased values", () => {
|
|
expect(resolveTabKey(null, TABS, "overview")).toBe("overview");
|
|
expect(resolveTabKey("", TABS, "overview")).toBe("overview");
|
|
expect(resolveTabKey("bogus", TABS, "overview")).toBe("overview");
|
|
expect(resolveTabKey("Tools", TABS, "overview")).toBe("overview");
|
|
});
|
|
|
|
it("validates against the supplied keys, not a hardcoded list", () => {
|
|
expect(resolveTabKey("skills", [...TABS, { key: "skills" }], "overview")).toBe("skills");
|
|
});
|
|
});
|