import { describe, expect, test } from "bun:test";
import { selectOverviewSections } from "./overview-sections";

describe("selectOverviewSections", () => {
  test("empty permission set → every section hidden", () => {
    expect(selectOverviewSections(new Set())).toEqual({
      users: false,
      orgs: false,
      billing: false,
      audit: false,
    });
  });

  test("admin-sys (all grantable perms) → every section shown", () => {
    const perms = new Set([
      "users:read",
      "orgs:read",
      "billing:read",
      "audit:read",
    ] as const);
    expect(selectOverviewSections(perms)).toEqual({
      users: true,
      orgs: true,
      billing: true,
      audit: true,
    });
  });

  test("staff with only audit:read → only the audit section shown", () => {
    const perms = new Set(["audit:read"] as const);
    expect(selectOverviewSections(perms)).toEqual({
      users: false,
      orgs: false,
      billing: false,
      audit: true,
    });
  });

  test("unrelated permission does not leak into any section", () => {
    const perms = new Set(["users:ban"] as const);
    expect(selectOverviewSections(perms)).toEqual({
      users: false,
      orgs: false,
      billing: false,
      audit: false,
    });
  });
});
