mirror of
https://github.com/nicotsx/zerobyte.git
synced 2026-04-18 22:09:30 -04:00
* fix: sanitize Accept-Language locale parsing * refactor(accept-language): prefer the highest quality language
26 lines
950 B
TypeScript
26 lines
950 B
TypeScript
import { describe, expect, test } from "vitest";
|
|
import { getLocaleFromAcceptLanguage } from "~/server/lib/accept-language";
|
|
|
|
describe("getLocaleFromAcceptLanguage", () => {
|
|
test("strips quality values from a single preferred language", () => {
|
|
expect(getLocaleFromAcceptLanguage("en;q=0.5")).toBe("en");
|
|
});
|
|
|
|
test("prefers the highest quality language", () => {
|
|
expect(getLocaleFromAcceptLanguage("en;q=0.5, fr;q=0.9")).toBe("fr");
|
|
});
|
|
|
|
test("treats language tags without q as the highest priority", () => {
|
|
expect(getLocaleFromAcceptLanguage("en;q=0.9, fr-CH")).toBe("fr-CH");
|
|
});
|
|
|
|
test("skips invalid language tags and uses the next valid one", () => {
|
|
expect(getLocaleFromAcceptLanguage("*, en-GB;q=0.8")).toBe("en-GB");
|
|
});
|
|
|
|
test("falls back to en-US when no valid language is present", () => {
|
|
expect(getLocaleFromAcceptLanguage(";;;, ???")).toBe("en-US");
|
|
expect(getLocaleFromAcceptLanguage(null)).toBe("en-US");
|
|
});
|
|
});
|