All Downloads are FREE. Search and download functionalities are using the official Maven repository.

__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  }
}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy