UNPKG

@owja/i18n

Version:

lightweight internationalization library for javascript

87 lines (76 loc) 3.29 kB
import {_maximize, _validateLanguageTag} from "./utils"; describe("Translator Utilities", () => { describe("validateLanguageTag", () => { test("validateLanguageTag should return expected strings", () => { expect(_validateLanguageTag("de")).toBe("de"); expect(_validateLanguageTag("de-DE")).toBe("de-DE"); expect(_validateLanguageTag("DE-DE")).toBe("de-DE"); expect(_validateLanguageTag("DE")).toBe("de"); }); test("validateLanguageTag should throw with bad format", () => { expect(() => _validateLanguageTag("de_DE")).toThrow(); }); }); describe("maximize", () => { const log = console.log; let logSpy: jest.Mock; afterEach(() => (console.log = log)); beforeEach(() => { logSpy = jest.fn(); console.log = logSpy; }); test("should be able to maximize German", () => { const de = _maximize("de"); expect(de.language).toBe("de"); expect(de.region).toBe("DE"); expect(de.script).toBe(undefined); expect(logSpy).not.toBeCalled(); }); test("should be able to maximize English", () => { const de = _maximize("en"); expect(de.language).toBe("en"); expect(de.region).toBe("US"); expect(de.script).toBe(undefined); expect(logSpy).not.toBeCalled(); }); test("should be able to maximize UK English", () => { const de = _maximize("en-UK"); expect(de.language).toBe("en"); expect(de.region).toBe("UK"); expect(de.script).toBe(undefined); expect(logSpy).not.toBeCalled(); }); test("should be able to maximize Azerbaijani", () => { const de = _maximize("az"); expect(de.language).toBe("az"); expect(de.region).toBe("AZ"); expect(de.script).toBe(undefined); expect(de.toString()).toBe("az-AZ"); expect(logSpy).not.toBeCalled(); }); test("should be able to maximize Azerbaijani with script", () => { const de = _maximize("az-Cyrl"); expect(de.language).toBe("az"); expect(de.region).toBe("AZ"); expect(de.script).toBe("Cyrl"); expect(de.toString()).toBe("az-Cyrl-AZ"); expect(logSpy).not.toBeCalled(); }); test("should be able to maximize Azerbaijani with script and region", () => { const de = _maximize("az-Latn-AZ"); expect(de.language).toBe("az"); expect(de.region).toBe("AZ"); expect(de.script).toBe("Latn"); expect(de.toString()).toBe("az-Latn-AZ"); expect(logSpy).not.toBeCalled(); }); test("should return a locale but print a warning on bad locales or if something goes wrong", () => { const de = _maximize("XX"); expect(de.language).toBe("xx"); expect(de.region).toBe(undefined); expect(de.script).toBe(undefined); expect(de.toString()).toBe("xx"); // expect(logSpy).toBeCalledWith('[@owja/i18n] locale "xx" incomplete'); }); }); });