@tanosugi/better-auth-utils
Version:
Better Auth Utils
67 lines (66 loc) • 2.63 kB
JavaScript
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");
});
});