import { describe, expect, test } from "bun:test"; import { isValidProjectColor } from "./color"; import { getDefaultTeamColor, resolveTeamColor } from "./colors"; describe("getDefaultTeamColor", () => { test("is deterministic per team id", () => { expect(getDefaultTeamColor("org_abc")).toBe(getDefaultTeamColor("org_abc")); }); test("differs across team ids", () => { expect(getDefaultTeamColor("org_abc")).not.toBe( getDefaultTeamColor("org_xyz"), ); }); test("produces a persistable (valid) color", () => { expect(isValidProjectColor(getDefaultTeamColor("org_abc"))).toBe(true); }); }); describe("resolveTeamColor", () => { test("uses a valid stored hex color", () => { expect(resolveTeamColor("org_abc", "#3366ff")).toBe("#3366ff"); }); test("uses a valid stored oklch color", () => { expect(resolveTeamColor("org_abc", "oklch(0.6 0.15 137)")).toBe( "oklch(0.6 0.15 137)", ); }); test("trims a valid stored color", () => { expect(resolveTeamColor("org_abc", " #3366ff ")).toBe("#3366ff"); }); test("falls back to the deterministic default when unset", () => { expect(resolveTeamColor("org_abc", null)).toBe( getDefaultTeamColor("org_abc"), ); expect(resolveTeamColor("org_abc", undefined)).toBe( getDefaultTeamColor("org_abc"), ); expect(resolveTeamColor("org_abc", "")).toBe( getDefaultTeamColor("org_abc"), ); }); test("falls back to the default when the stored color is malformed", () => { expect(resolveTeamColor("org_abc", "red; color: evil")).toBe( getDefaultTeamColor("org_abc"), ); expect(resolveTeamColor("org_abc", "not-a-color")).toBe( getDefaultTeamColor("org_abc"), ); }); });