import { activeNavTo } from "./layout/AppShell";

// Route ownership under test (the real sidebar entries):
//   /career          -> Career Workspace
//   /career/builder  -> CV Builder
// A child route must activate exactly one nav item — the most specific owner.
const TOS = ["/dashboard", "/jobs", "/career", "/career/builder", "/settings"];

describe("sidebar active nav ownership", () => {
  test("/career activates Career Workspace only", () => {
    expect(activeNavTo("/career", TOS)).toBe("/career");
  });

  test("/career/builder activates CV Builder only, not Career Workspace", () => {
    expect(activeNavTo("/career/builder", TOS)).toBe("/career/builder");
  });

  test("/career/builder/{id} activates CV Builder only (the reported bug)", () => {
    // Previously /career matched via startsWith('/career/') AND /career/builder matched — both lit up.
    expect(activeNavTo("/career/builder/42", TOS)).toBe("/career/builder");
  });

  test("a plain child of /career (not /builder) still belongs to Career Workspace", () => {
    expect(activeNavTo("/career/anything-else", TOS)).toBe("/career");
  });

  test("unrelated routes are unaffected and exact matches win", () => {
    expect(activeNavTo("/jobs", TOS)).toBe("/jobs");
    expect(activeNavTo("/settings/connected-accounts", TOS)).toBe("/settings");
  });

  test("a path owned by no nav item activates nothing", () => {
    expect(activeNavTo("/admin/system", TOS)).toBeNull();
  });

  test("exactly one item is ever active (no double highlight)", () => {
    for (const path of ["/career", "/career/builder", "/career/builder/7", "/jobs"]) {
      const active = activeNavTo(path, TOS);
      const matches = TOS.filter((t) => t === active);
      expect(matches).toHaveLength(1);
    }
  });
});
