// eslint-disable-next-line no-global-assign global.localStorage = {}; global.navigator = { language: "en" }; const { currentLocale } = require("../src/i18n"); describe("Test i18n.js", () => { it("currentLocale()", () => { expect(currentLocale()).toEqual("en"); navigator.language = "zh-HK"; expect(currentLocale()).toEqual("zh-HK"); // Note that in Safari on iOS prior to 10.2, the country code returned is lowercase: "en-us", "fr-fr" etc. // https://developer.mozilla.org/en-US/docs/Web/API/Navigator/language navigator.language = "zh-hk"; expect(currentLocale()).toEqual("en"); navigator.language = "en-US"; expect(currentLocale()).toEqual("en"); navigator.language = "ja-ZZ"; expect(currentLocale()).toEqual("ja"); navigator.language = "zz"; expect(currentLocale()).toEqual("en"); navigator.language = "zz-ZZ"; expect(currentLocale()).toEqual("en"); localStorage.locale = "en"; expect(currentLocale()).toEqual("en"); localStorage.locale = "zh-HK"; expect(currentLocale()).toEqual("zh-HK"); }); });