UNPKG

@tanosugi/better-auth-utils

Version:

Better Auth Utils

67 lines (66 loc) 2.63 kB
import { describe, expect, it } from "vitest"; import { getLang } from "./index"; const mockCtx = (acceptLanguage, referer) => ({ acceptLanguage, referer, }); describe("getLang", () => { it("enabledLocales: en, ja, Accept-Language: ja", () => { const ctx = mockCtx("ja"); const options = { enabledLocales: ["en", "ja"], }; expect(getLang(ctx, options)).toBe("ja"); }); it("enabledLocales: all, Accept-Language: en", () => { const ctx = mockCtx("en"); const options = { enabledLocales: ["all"] }; expect(getLang(ctx, options)).toBe("en"); }); it("no options, Accept-Language: ja", () => { const ctx = mockCtx("ja"); expect(getLang(ctx, undefined)).toBe("ja"); }); it('i18nRouting: ["en", "ja"], url: /ja/hoge', () => { const ctx = mockCtx(undefined, "http://localhost/ja/hoge"); const options = { i18nRouting: ["en", "ja"] }; expect(getLang(ctx, options)).toBe("ja"); }); it("singleLang: en", () => { const ctx = mockCtx(); const options = { singleLang: "en" }; expect(getLang(ctx, options)).toBe("en"); }); it("Accept-Language: de, allowedLocales: en, ja", () => { const ctx = mockCtx("de"); const options = { enabledLocales: ["en", "ja"], }; expect(getLang(ctx, options)).toBeUndefined(); }); it("enabledLocales: fr, Accept-Language: fr", () => { const ctx = mockCtx("fr"); const options = { enabledLocales: ["fr"] }; expect(getLang(ctx, options)).toBe("fr"); }); it("enabledLocales: zh-CN, Accept-Language: zh-CN", () => { const ctx = mockCtx("zh-CN"); const options = { enabledLocales: ["zh-CN"] }; expect(getLang(ctx, options)).toBe("zh-CN"); }); it("enabledLocales: ko, Accept-Language: ko", () => { const ctx = mockCtx("ko"); const options = { enabledLocales: ["ko"] }; expect(getLang(ctx, options)).toBe("ko"); }); it("enabledLocales: zh-TW, Accept-Language: zh-TW,zh;q=0.9,en;q=0.8", () => { const ctx = mockCtx("zh-TW,zh;q=0.9,en;q=0.8"); const options = { enabledLocales: ["zh-TW"] }; expect(getLang(ctx, options)).toBe("zh-TW"); }); it("enabledLocales: zh-CN, Accept-Language: zh-CN;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6,zh-TW;q=0.5", () => { const ctx = mockCtx("zh-CN;q=0.9,zh;q=0.8,en-US;q=0.7,en;q=0.6,zh-TW;q=0.5"); const options = { enabledLocales: ["zh-CN", "zh-TW"] }; expect(getLang(ctx, options)).toBe("zh-CN"); }); });