import assert from 'node:assert/strict' import test from 'node:test' import type { ConsignmentSpecField } from '../src/types/consignment.ts' import { buildSpecItemName } from '../src/utils/consignment-spec.ts' function makeSpec( overrides: Partial & Pick, ): ConsignmentSpecField { return { type: 'text', required: false, options: [], placeholder: '', helpText: '', matchMode: 'exact', wildcardValues: [], showInItemName: true, sortOrder: 0, ...overrides, } } const surnanSpecs = [ makeSpec({ key: 'system', label: '操作系统', sortOrder: 10 }), makeSpec({ key: 'series', label: '系列', sortOrder: 20 }), makeSpec({ key: 'diamondLevel', label: '钻石等级', type: 'number', sortOrder: 30 }), makeSpec({ key: 'brillianceCount', label: '璀璨数', type: 'number', sortOrder: 40 }), ] const surnanTemplate = '{system}{series}{diamondLevel}钻{brillianceCount}璀璨 苏尔南' test('物品名模板:璀璨数为 0 时不残留「璀璨」单位', () => { assert.equal( buildSpecItemName(surnanTemplate, surnanSpecs, { system: '安卓', series: '怒嚎', diamondLevel: '2', brillianceCount: '0', }), '安卓怒嚎2钻 苏尔南', ) }) test('物品名模板:璀璨数大于 0 时单位正常保留', () => { assert.equal( buildSpecItemName(surnanTemplate, surnanSpecs, { system: '安卓', series: '怒嚎', diamondLevel: '2', brillianceCount: '3', }), '安卓怒嚎2钻3璀璨 苏尔南', ) }) test('物品名模板:钻级为空时「钻」也不会单独残留', () => { assert.equal( buildSpecItemName(surnanTemplate, surnanSpecs, { system: '安卓', series: '怒嚎', diamondLevel: '', brillianceCount: '0', }), '安卓怒嚎 苏尔南', ) })