langHelper.test.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. /* eslint-disable test/no-import-node-test */
  2. import test from 'node:test'
  3. import assert from 'node:assert/strict'
  4. import { langHelper } from '../src/utils/langHelper.ts'
  5. const multilingualValue = '中文名称~~en**English name~~ru**Русское название'
  6. test('按当前语言转换嵌套响应数据', () => {
  7. const response = {
  8. name: multilingualValue,
  9. count: 0,
  10. children: [{ label: '子项~~en**Child' }],
  11. metadata: null,
  12. }
  13. assert.deepEqual(langHelper.transform(response, 'en'), {
  14. name: 'English name',
  15. count: 0,
  16. children: [{ label: 'Child' }],
  17. metadata: null,
  18. })
  19. assert.deepEqual(langHelper.transform(response, 'zh-CN').name, '中文名称')
  20. assert.deepEqual(langHelper.transform(response, 'ru').name, 'Русское название')
  21. })
  22. test('英文缺失时回退中文', () => {
  23. assert.equal(langHelper.getDisplayText('中文名称~~en**', 'en'), '中文名称')
  24. })
  25. test('没有动态字段时保持原值和原引用', () => {
  26. const response = { name: '普通文本', count: 0, children: [{ label: '子项' }] }
  27. assert.equal(langHelper.getDisplayText('普通文本', 'en'), '普通文本')
  28. assert.strictEqual(langHelper.transform(response, 'en'), response)
  29. })