voerka-i18n/test/extract.test.js
2022-04-11 09:00:25 +08:00

47 lines
1.8 KiB
JavaScript

const extract = require("../packages/cli/extract.plugin");
const gulp = require('gulp');
const path = require('path');
const Vinyl = require('vinyl');
const { getTranslateTexts, normalizeLanguageOptions } = require("../packages/cli/extract.plugin");
const languages = [{name:'en',title:"英文"},{name:'zh',title:"中文",default:true},{name:'de',title:"德语"},{name:'jp',title:"日本語"}]
test("扫描提取翻译文本",(done)=>{
const file = new Vinyl({cwd: '/',base: '/test/',path: '/test/file.js',contents: Buffer.from("")});
const texts = getTranslateTexts(`t("a")\nt('b')\nt("c",1)\nt("d","a" )`,file,normalizeLanguageOptions({
languages
})).default // 默认名称空间
expect(Object.keys(texts).join()).toBe("a,b,c,d")
Object.entries(texts).forEach(([text,langs])=>{
if(!text.startsWith("$")){
expect(langs["en"]).toEqual(text)
expect(langs["jp"]).toEqual(text)
expect(langs["de"]).toEqual(text)
}
})
done()
})
test("启用名称空间后扫描提取翻译文本",(done)=>{
const file = new Vinyl({base: '/test/',path: '/test/a/b/file.js',contents: Buffer.from("")});
const texts = getTranslateTexts(`t("a")\nt('b')\nt("c",1)\nt("d","a" )`,file,normalizeLanguageOptions({
languages,
namespaces:{
"core":"a/b", // 名称空间
}
}))
expect("core" in texts).toBeTruthy()
expect(Object.keys(texts.core).join()).toBe("a,b,c,d")
Object.entries(texts.core).forEach(([text,langs])=>{
if(!text.startsWith("$")){
expect(langs["en"]).toEqual(text)
expect(langs["jp"]).toEqual(text)
expect(langs["de"]).toEqual(text)
}
})
done()
})