import assert from 'node:assert/strict' import test from 'node:test' import { appendProductNameSourceSuffix, applyProductNameSourceSuffix, normalizeProductNameSuffixText, resolveProductNameSourceSuffix, } from '../src/utils/product-name-source-suffix.ts' const items = [ { source: '91kaquan', suffix: '91卡券' }, { source: 'douyin', suffix: '抖音' }, ] test('来源后缀:空配置不追加', () => { assert.equal(applyProductNameSourceSuffix('苏尔南手枪', '91kaquan', []), '苏尔南手枪') assert.equal(applyProductNameSourceSuffix('苏尔南手枪', '91kaquan', null), '苏尔南手枪') }) test('来源后缀:精确匹配后追加全角括号后缀', () => { assert.equal( applyProductNameSourceSuffix('苏尔南手枪', '91kaquan', items), '苏尔南手枪(91卡券)', ) }) test('来源后缀:来源匹配不区分大小写并去除首尾空格', () => { assert.equal(resolveProductNameSourceSuffix(items, ' 91KAQUAN '), '91卡券') assert.equal( applyProductNameSourceSuffix('苏尔南手枪', ' 91Kaquan ', items), '苏尔南手枪(91卡券)', ) }) test('来源后缀:没有匹配来源时不追加', () => { assert.equal(applyProductNameSourceSuffix('苏尔南手枪', 'kuaishou', items), '苏尔南手枪') assert.equal(applyProductNameSourceSuffix('苏尔南手枪', '', items), '苏尔南手枪') }) test('来源后缀:商品名已带相同后缀时不重复追加', () => { assert.equal( appendProductNameSourceSuffix('苏尔南手枪(91卡券)', '91卡券'), '苏尔南手枪(91卡券)', ) assert.equal(appendProductNameSourceSuffix('苏尔南手枪(91卡券)', '91卡券'), '苏尔南手枪(91卡券)') }) test('来源后缀:后缀为空或商品名为空时不做处理', () => { assert.equal(appendProductNameSourceSuffix('苏尔南手枪', ''), '苏尔南手枪') assert.equal(appendProductNameSourceSuffix('', '91卡券'), '') assert.equal(applyProductNameSourceSuffix('', '91kaquan', items), '') }) test('来源后缀:配置里的外层括号会被剥离后再拼接', () => { assert.equal(normalizeProductNameSuffixText('(91卡券)'), '91卡券') assert.equal(normalizeProductNameSuffixText('(91卡券)'), '91卡券') assert.equal( applyProductNameSourceSuffix('苏尔南手枪', '91kaquan', [ { source: '91kaquan', suffix: '(91卡券)' }, ]), '苏尔南手枪(91卡券)', ) }) test('来源后缀:停用的配置不参与展示,启用后才追加', () => { assert.equal( applyProductNameSourceSuffix('苏尔南手枪', '91kaquan', [ { source: '91kaquan', suffix: '91卡券', enabled: false }, ]), '苏尔南手枪', ) assert.equal( applyProductNameSourceSuffix('苏尔南手枪', '91kaquan', [ { source: '91kaquan', suffix: '91卡券', enabled: true }, ]), '苏尔南手枪(91卡券)', ) }) test('来源后缀:同一来源多条配置时取第一条有效后缀', () => { assert.equal( resolveProductNameSourceSuffix( [ { source: '91kaquan', suffix: '第一' }, { source: '91kaquan', suffix: '第二' }, ], '91kaquan', ), '第一', ) })