feat(ui): redesign job workspace sections
This commit is contained in:
@@ -1,15 +1,34 @@
|
||||
import { WORKSPACE_SECTIONS, workspaceSection } from "./applicationWorkspace";
|
||||
import { WORKSPACE_SECTIONS, workspaceSection, workspaceSubsection } from "./applicationWorkspace";
|
||||
|
||||
test("workspace navigation exposes five purposes and preserves legacy links", () => {
|
||||
test("workspace navigation exposes seven purposes and preserves legacy links", () => {
|
||||
expect(WORKSPACE_SECTIONS.map((section) => section.key)).toEqual([
|
||||
"overview", "analysis", "cv", "cover-letter", "interview",
|
||||
"overview", "match", "application", "documents", "timeline", "tasks", "interview",
|
||||
]);
|
||||
expect(workspaceSection("match")).toBe("analysis");
|
||||
expect(workspaceSection("timeline")).toBe("overview");
|
||||
expect(workspaceSection("portfolio")).toBe("overview");
|
||||
expect(workspaceSection("notes")).toBe("cover-letter");
|
||||
for (const alias of ["job-details", "checklist", "documents", "communication"]) expect(workspaceSection(alias)).toBe("overview");
|
||||
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");
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user