UNPKG

i18next-endings-postprocessor

Version:
61 lines (53 loc) 2.77 kB
import { describe, test, expect } from "vitest"; import i18next from "i18next"; import I18nEndings from "./index"; const t = await i18next.use(new I18nEndings()).init({ postProcess: ["endings"], lng: "ru", resources: { ru: { translation: { key: "Пора покупать {{count}} [[{{count}}|билет|билета|билетов]]!", complex_key: "Мы нашли всего {{countOne}} [[{{countOne}}|билет|билета|билетов]], из которых {{countTwo}} [[{{countTwo}}|билет|билета|билетов]] подходит лучше всего", short_key: "Багаж для {{count}} [[{{count}}|пассажира|пассажиров]]", key_with_empty_value: "Багаж для {{count}} [[{{count}}|пассажира|пассажиров|]]", }, }, }, }); describe("I18nEndings (ru)", () => { test.each([ // simple cases { count: 1, expected: "Пора покупать 1 билет!" }, { count: 2, expected: "Пора покупать 2 билета!" }, { count: 3, expected: "Пора покупать 3 билета!" }, { count: 4, expected: "Пора покупать 4 билета!" }, { count: 5, expected: "Пора покупать 5 билетов!" }, { count: 6, expected: "Пора покупать 6 билетов!" }, { count: 7, expected: "Пора покупать 7 билетов!" }, { count: 8, expected: "Пора покупать 8 билетов!" }, { count: 9, expected: "Пора покупать 9 билетов!" }, { count: 10, expected: "Пора покупать 10 билетов!" }, { count: 11, expected: "Пора покупать 11 билетов!" }, // special cases { count: 0, expected: "Пора покупать 0 билетов!" }, { count: 21, expected: "Пора покупать 21 билет!" }, { count: 25, expected: "Пора покупать 25 билетов!" }, ])("count $count", ({ count, expected }) => { const result = t("key", { count }); expect(result).toBe(expected); }); test("handle two processing in single key", () => { expect(t("complex_key", { countOne: 47, countTwo: 21 })).toBe( "Мы нашли всего 47 билетов, из которых 21 билет подходит лучше всего" ); }); test("short_key should fallback undefined value to a last defined value", () => { expect(t("short_key", { count: 5 })).toEqual("Багаж для 5 пассажиров"); }); test("key_with_empty_value should not trigger fallback for empty value", () => { expect(t("key_with_empty_value", { count: 5 })).toEqual("Багаж для 5 "); }); });