import { describe, expect, it } from "bun:test";
import { negotiateAcceptLanguage } from "./negotiate";

describe("negotiateAcceptLanguage", () => {
  it("picks the highest-quality supported base language", () => {
    expect(negotiateAcceptLanguage("fr-CA,fr;q=0.9,en;q=0.8")).toBe("fr");
  });
  it("falls back to en for unsupported languages", () => {
    expect(negotiateAcceptLanguage("ja,zh;q=0.9")).toBe("en");
  });
  it("returns en for empty/null", () => {
    expect(negotiateAcceptLanguage("")).toBe("en");
    expect(negotiateAcceptLanguage(null)).toBe("en");
  });
  it("respects quality ordering over position", () => {
    expect(negotiateAcceptLanguage("en;q=0.5,fr;q=0.9")).toBe("fr");
  });
  it("matches base language case-insensitively", () => {
    expect(negotiateAcceptLanguage("FR-fr")).toBe("fr");
  });
});
