UNPKG

@voerkai18n/utils

Version:

utils for voerkai18n

82 lines (76 loc) 3.14 kB
import { describe, expect, it } from 'vitest'; import { extractMessages } from '../extractMessages'; import type { MessageNode } from '..'; describe('extractMessages', () => { it('should extract simple string literals', () => { const code = ` t("aaa") t('bbb') `; const expected: MessageNode[] = [ { message: "aaa", rang: expect.any(Object) ,namespace:"default"}, { message: "bbb", rang: expect.any(Object) ,namespace:"default"} ]; expect(extractMessages(code)).toEqual(expected); }); it('should extract string literals with object arguments', () => { const code = ` t("ccc", {xxx:xxx}) `; const expected: MessageNode[] = [ { message: "ccc", rang: expect.any(Object), vars: "{xxx:xxx}" ,namespace:"default" } ]; expect(extractMessages(code)).toEqual(expected); }); it('should extract string literals with array arguments', () => { const code = ` t('ddd', [1,2,3,""]) `; const expected: MessageNode[] = [ { message: "ddd", rang: expect.any(Object), vars: "[1,2,3,\"\"]" ,namespace:"default" } ]; expect(extractMessages(code)).toEqual(expected); }); it('should extract string literals with object and object options', () => { const code = ` t("eee", {xxx:xxx},{}) `; const expected: MessageNode[] = [ { message: "eee", rang: expect.any(Object), vars: "{xxx:xxx}", options: "{}" ,namespace:"default"} ]; expect(extractMessages(code)).toEqual(expected); }); it('should extract string literals with array and object options', () => { const code = ` t('fff', [1,2,3,""],{}) `; const expected: MessageNode[] = [ { message: "fff", rang: expect.any(Object), vars: "[1,2,3,\"\"]", options: "{}" ,namespace:"default"} ]; expect(extractMessages(code)).toEqual(expected); }); it('提取段落时忽略message', () => { const code = ` <Translate>aaa</Translate> <Translate id="a">bbb</Translate> <Translate id="x" vars="y">ccc</Translate> <Translate id="x" vars="y" options="z">ddd</Translate> <Translate id="x" vars="y" options="z">eee<div>x</div>eee</Translate> `; const expected: MessageNode[] = [ ]; expect(extractMessages(code)).toEqual(expected); }); it('同时存在message和children时以message优先', () => { const code = ` <Translate>aaa</Translate> <Translate id="a">bbb</Translate> <Translate id="x" vars="y">ccc</Translate> <Translate id="x" vars="y" options="z">ddd</Translate> <Translate id="x" vars="y" options="z">eee<div>x</div>eee</Translate> `; const expected: MessageNode[] = [ ]; expect(extractMessages(code)).toEqual(expected); }); });