feat(web): clickable agent stat icons deep-linking to settings tabs (#186)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
45f916cd1e
commit
67adf93b47
3 files changed
+114
-23
No files matched your search
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* 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");
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user