@owja/i18n
Version:
lightweight internationalization library for javascript
87 lines (76 loc) • 3.29 kB
text/typescript
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');
});
});
});