__tests__.formatter.test.js Maven / Gradle / Ivy
import { F } from "helpers/formatter"
import Translator, { T } from "helpers/translator"
import i18n, { t } from "utils/i18n"
test('translations', () => {
const { t } = useMockTranslator()
expect(t("test.sentence.1")).toEqual("{T}ask {nr} for {U}ser {for}")
expect(t("test.sentence.2")).toEqual("{T}ask 3 for {U}ser Tester")
expect(t("test.sentence.3")).toEqual("{T}ask 3 for {U}ser {Tester}")
expect(t("test.sentence.4")).toEqual("{T}ask {NOW} {3} for {U}ser {Tester}")
})
test('Sentence case tests', () => {
const { t } = useMockTranslator()
expect(F.toSentenceCase(t("test.sentence.1"))).toEqual("Task nr for User for")
expect(F.toSentenceCase(t("test.sentence.2"))).toEqual("Task 3 for User tester")
expect(F.toSentenceCase(t("test.sentence.3"))).toEqual("Task 3 for User Tester")
expect(F.toSentenceCase(t("test.sentence.4"))).toEqual("Task NOW 3 for User Tester")
expect(F.toSentenceCase(t("test.sentence.5"))).toEqual("task NOW 3 for user Tester")
expect(F.toSentenceCase(t("test.sentence.6"))).toEqual("task NOW 3 for user Tester")
expect(F.toSentenceCase(t("test.sentence.7"))).toEqual("task NOW 3 for user Tester")
})
test('Title case tests', () => {
const { t } = useMockTranslator()
expect(F.toTitleCase(t("test.title.1"))).toEqual("D_On't Let Go")
expect(F.toTitleCase(t("test.title.2"))).toEqual("Don'T Let Go of Me")
expect(F.toTitleCase(t("test.title.3"))).toEqual("Don'T Let (Go) of Me")
expect(F.toTitleCase(t("test.title.4"))).toEqual("Creëer Extern Verwerkingsticket")
})
const translations = {
"en": {
"test": {
"sentence": {
"1": "{T}ask {nr} for {U}ser {for}",
"2": "{T}ask ${nr} for {U}ser ${for}",
"3": "{T}ask ${nr} for {U}ser {${for}}",
"4": "{T}ask {NOW} {${nr}} for {U}ser {${for}}",
"5": "{t}ask {NOW} ${nr} for User {${for}}",
"6": "{t}ask {NOW} ${nr} for User {${for}}",
"7": " {t}ask {NOW} ${nr} for User {${for}} ",
},
"title": {
"1": "d_on't let go",
"2": "don'{T} let go {o}f me",
"3": "don'{T} let (go) {o}f me",
"4": "creëer extern verwerkingsticket"
}
}
}
}
const useMockTranslation = () => {
Object
.entries(translations)
.forEach(([language, translations]) =>
i18n.addResourceBundle(language, 'test', translations, true, true)
)
i18n.changeLanguage('en')
const t = i18n.t.bind(i18n)
return {i18n, t}
}
const useMockTranslator = () => {
const { t, i18n} = useMockTranslation()
const translator = new Translator(t, i18n)
const tn = (key, options) => { return translator.translate(key, {...options, domain: 'test', variables: {nr: 3, for: "Tester"}, format: undefined}) }
return { translator, t: tn }
}