Files
LingvAI/tests/utils/language.test.ts
David cf0b310918 Added hotkeys + updated dependencies & webpack5 + humanetech badge (#15)
* Added language & theme switch hotkeys

* Hotkeys testing

* Language switch when equal

* Shortcut keys changed

* Dependencies updated & upgraded to webpack5

* Added HumaneTech badge

* Disabled FLoC
2021-04-30 23:11:26 +02:00

48 lines
1.6 KiB
TypeScript

import { replaceBoth, retrieveFiltered, CheckType, LangType } from "../../utils/language";
import { languages, exceptions, mappings } from "../../utils/languages.json";
describe("replaceBoth", () => {
const testReplacer = (
checkType: CheckType,
checkObj: {
[key in LangType]: {
[key: string]: string
}
},
langType: LangType
) => (
Object.entries(checkObj[langType]).forEach(([code, replacement]) => {
const res = replaceBoth(checkType, { source: "", target: "", [langType]: code })
expect(res[langType]).toBe(replacement);
})
);
it("replaces excepted sources correctly", () => {
testReplacer("exception", exceptions, "source");
});
it("replaces excepted targets correctly", () => {
testReplacer("exception", exceptions, "target");
});
it("replaces mapped sources correctly", () => {
testReplacer("mapping", mappings, "source");
});
it("replaces mapped targets correctly", () => {
testReplacer("mapping", mappings, "target");
});
});
describe("retrieveFiltered", () => {
const filteredEntries = (langType: LangType) => (
Object.entries(languages).filter(([code]) => !Object.keys(exceptions[langType]).includes(code))
);
it("filters by exceptions", () => {
const { sourceLangs, targetLangs } = retrieveFiltered();
expect(sourceLangs).toStrictEqual(filteredEntries("source"));
expect(targetLangs).toStrictEqual(filteredEntries("target"));
});
});