import { describe, expect, it } from "vitest";
import { canEdit, parseRole } from "@/lib/auth/roles";

describe("canEdit", () => {
  it("lets only a Super Admin change things", () => {
    expect(canEdit({ role: "ADMIN" })).toBe(true);
    expect(canEdit({ role: "VIEWER" })).toBe(false);
  });

  it("refuses when nobody is signed in", () => {
    expect(canEdit(null)).toBe(false);
    expect(canEdit(undefined)).toBe(false);
  });
});

describe("parseRole", () => {
  it.each([
    ["viewer", "VIEWER"],
    ["VIEWER", "VIEWER"],
    ["view-only", "VIEWER"],
    ["read-only", "VIEWER"],
    ["admin", "ADMIN"],
    [" super-admin ", "ADMIN"],
  ])("reads %s as %s", (input, role) => {
    expect(parseRole(input)).toBe(role);
  });

  it("rejects anything else", () => {
    expect(parseRole("owner")).toBeNull();
    expect(parseRole("")).toBeNull();
    expect(parseRole(undefined)).toBeNull();
  });
});
