Files
jobtrackingapp/job-tracker-ui/src/applicationWorkspace.test.ts
T
2026-10-07 01:58:31 +02:00

35 lines
1.8 KiB
TypeScript

import { WORKSPACE_SECTIONS, workspaceSection, workspaceSubsection } from "./applicationWorkspace";
test("workspace navigation exposes seven purposes and preserves legacy links", () => {
expect(WORKSPACE_SECTIONS.map((section) => section.key)).toEqual([
"overview", "match", "application", "documents", "timeline", "tasks", "interview",
]);
expect(workspaceSection("analysis")).toBe("match");
expect(workspaceSection("portfolio")).toBe("documents");
expect(workspaceSection("notes")).toBe("tasks");
expect(workspaceSection("checklist")).toBe("tasks");
expect(workspaceSection("communication")).toBe("timeline");
expect(workspaceSection("cv")).toBe("application");
expect(workspaceSection("cover-letter")).toBe("application");
expect(workspaceSection("job-details")).toBe("overview");
expect(workspaceSection("unknown-section")).toBe("overview");
expect(workspaceSection("constructor")).toBe("overview");
expect(workspaceSection("__proto__")).toBe("overview");
});
test("legacy material and correspondence links reveal their original owner without rewriting URLs", () => {
expect(workspaceSubsection("cv", "submission")).toBe("cv");
expect(workspaceSubsection("cover-letter", null)).toBe("letter");
expect(workspaceSubsection("communication", "activity")).toBe("correspondence");
expect(workspaceSubsection("timeline", null)).toBe("activity");
});
test("canonical subsection URLs are durable and unknown inputs have safe defaults", () => {
for (const sub of ["cv", "letter", "answers", "submission"]) expect(workspaceSubsection("application", sub)).toBe(sub);
expect(workspaceSubsection("timeline", "correspondence")).toBe("correspondence");
for (const sub of [null, "unknown", "constructor", "__proto__"]) {
expect(workspaceSubsection("application", sub)).toBe("cv");
expect(workspaceSubsection("timeline", sub)).toBe("activity");
}
});