72 lines
3.9 KiB
JavaScript
72 lines
3.9 KiB
JavaScript
import assert from "node:assert/strict"
|
|
import test from "node:test"
|
|
import ts from "typescript"
|
|
import { readFile } from "node:fs/promises"
|
|
import vm from "node:vm"
|
|
|
|
async function loadModule() {
|
|
const source = await readFile(new URL("./permission-i18n.ts", import.meta.url), "utf8")
|
|
const compiled = ts.transpileModule(source, {
|
|
compilerOptions: {
|
|
target: ts.ScriptTarget.ES2017,
|
|
module: ts.ModuleKind.CommonJS,
|
|
},
|
|
fileName: "permission-i18n.ts",
|
|
})
|
|
const sandbox = {
|
|
exports: {},
|
|
module: { exports: {} },
|
|
}
|
|
sandbox.exports = sandbox.module.exports
|
|
vm.runInNewContext(compiled.outputText, sandbox)
|
|
return sandbox.module.exports
|
|
}
|
|
|
|
test("localizes seeded permission display names to English", async () => {
|
|
const { getPermissionDisplayName, getPermissionGroupName } = await loadModule()
|
|
|
|
assert.equal(getPermissionDisplayName("user.assignRole", "\u5206\u914d\u7528\u6237\u89d2\u8272", "en-US"), "Assign user roles")
|
|
assert.equal(getPermissionDisplayName("agentTeamSchedule.batchGenerate", "批量生成客服组排班", "en-US"), "Batch generate agent team schedules")
|
|
assert.equal(getPermissionDisplayName("branding.view", "查看平台品牌配置", "en-US"), "View branding settings")
|
|
assert.equal(getPermissionDisplayName("docPage.view", "查看文档中心页面", "en-US"), "View support docs")
|
|
assert.equal(getPermissionGroupName("agentTeamSchedule", "en-US"), "Agent team schedules")
|
|
assert.equal(getPermissionGroupName("branding", "en-US"), "Branding settings")
|
|
})
|
|
|
|
test("keeps original permission names for Chinese locale", async () => {
|
|
const { getPermissionDisplayName, getPermissionGroupName } = await loadModule()
|
|
|
|
assert.equal(getPermissionDisplayName("user.view", "查看用户", "zh-CN"), "查看用户")
|
|
assert.equal(getPermissionDisplayName("branding.view", "查看平台品牌配置", "zh-CN"), "查看平台品牌配置")
|
|
assert.equal(getPermissionGroupName("agentTeam", "zh-CN"), "agentTeam")
|
|
})
|
|
|
|
test("localizes seeded permission display names to Russian", async () => {
|
|
const { getPermissionDisplayName, getPermissionGroupName } = await loadModule()
|
|
|
|
assert.equal(
|
|
getPermissionDisplayName("user.assignRole", "分配用户角色", "ru-RU"),
|
|
"Назначение ролей пользователям"
|
|
)
|
|
assert.equal(getPermissionDisplayName("user.view", "查看用户", "ru-RU"), "Просмотр пользователей")
|
|
assert.equal(getPermissionDisplayName("branding.view", "查看平台品牌配置", "ru-RU"), "Просмотр настроек брендинга")
|
|
assert.equal(getPermissionDisplayName("docPage.view", "查看文档中心页面", "ru-RU"), "Просмотр страниц документации")
|
|
assert.equal(getPermissionDisplayName("supportConfig.update", "更新支持中心配置", "ru-RU"), "Изменение настроек центра поддержки")
|
|
assert.equal(
|
|
getPermissionDisplayName("agentTeamSchedule.batchGenerate", "批量生成客服组排班", "ru-RU"),
|
|
"Массовое создание расписаний команд операторов"
|
|
)
|
|
assert.equal(getPermissionGroupName("agentTeamSchedule", "ru-RU"), "Расписаний команд операторов")
|
|
assert.equal(getPermissionGroupName("aiAgent", "ru-RU"), "ИИ-агентов")
|
|
assert.equal(getPermissionGroupName("branding", "ru-RU"), "Настроек брендинга")
|
|
})
|
|
|
|
test("falls back for unknown codes and unsupported locales", async () => {
|
|
const { getPermissionDisplayName, getPermissionGroupName } = await loadModule()
|
|
|
|
assert.equal(getPermissionDisplayName("unknown.thing", "\u539f\u59cb\u540d\u79f0", "ru-RU"), "\u539f\u59cb\u540d\u79f0")
|
|
assert.equal(getPermissionDisplayName("user.view", "\u539f\u59cb\u540d\u79f0", "fr-FR"), "\u539f\u59cb\u540d\u79f0")
|
|
assert.equal(getPermissionGroupName("unknownGroup", "ru-RU"), "unknownGroup")
|
|
assert.equal(getPermissionGroupName("user", "fr-FR"), "user")
|
|
})
|