- 新增来源后缀配置(来源下拉、启停、备注,同一时间仅启用一个) - 管理端列表/详情与打手端列表/详情/大厅展示「商品名(后缀)」 - 打手端 DTO 透出 sourceProvider,仅展示,不改写商品名 - 新增来源选项接口与前后端单测
93 lines
3.1 KiB
TypeScript
93 lines
3.1 KiB
TypeScript
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',
|
||
),
|
||
'第一',
|
||
)
|
||
})
|