Files
order_site/apps/backend/src/services/admin/admin-order-read-helpers.test.ts
T

127 lines
3.9 KiB
TypeScript

import test from 'node:test'
import assert from 'node:assert/strict'
import { mapAdminOrderListItem, summarizeOrderItems } from './admin-order-read-helpers.js'
import type { OrderItemRow, OrderListRow } from '../../types/repository/rows.js'
test('mapAdminOrderListItem formats itemTitle, skuNick, and summary correctly for single item', () => {
const order: OrderListRow = {
id: 1,
provider: '91',
platform: 'kuaishou',
shop_id: '4269276762',
shop_name: '独角兽游戏专营店',
platform_order_id: '2625301761098133',
order_status: 'paid',
pay_status: 'paid',
buyer_id: '',
buyer_name: '',
receiver_contact: '',
total_amount: 16900,
currency: 'CNY',
raw_payload_json: {},
paid_at: '2026-09-10T09:15:00.000Z',
created_at: '2026-09-10T09:15:00.000Z',
updated_at: '2026-09-10T09:15:00.000Z',
}
const orderItems: OrderItemRow[] = [
{
id: 10,
order_id: 1,
sku_code: '26079757920762',
sku_name: '安卓血宴2钻',
quantity: 1,
spec_json: JSON.stringify({
itemTitle: '和平精英地铁逃生装备满钻低价苏尔南怒嚎暗潮手枪璀璨无暇1到7钻',
skuNick: '安卓血宴2钻',
}),
item_snapshot_json: JSON.stringify({
kuaishouSendCode: {
itemTitle: '和平精英地铁逃生装备满钻低价苏尔南怒嚎暗潮手枪璀璨无暇1到7钻',
skuNick: '安卓血宴2钻',
},
}),
},
]
const mapped = mapAdminOrderListItem(order, { orderItems, tasks: [] })
assert.equal(mapped.itemTitle, '和平精英地铁逃生装备满钻低价苏尔南怒嚎暗潮手枪璀璨无暇1到7钻')
assert.equal(mapped.skuNick, '安卓血宴2钻')
assert.equal(
mapped.itemSummary,
'和平精英地铁逃生装备满钻低价苏尔南怒嚎暗潮手枪璀璨无暇1到7钻 (安卓血宴2钻)',
)
assert.equal(mapped.itemCount, 1)
assert.equal(mapped.totalQuantity, 1)
assert.deepEqual(mapped.items, [
{
itemTitle: '和平精英地铁逃生装备满钻低价苏尔南怒嚎暗潮手枪璀璨无暇1到7钻',
skuNick: '安卓血宴2钻',
quantity: 1,
},
])
})
test('mapAdminOrderListItem falls back to order raw_payload_json when orderItems is empty', () => {
const order: OrderListRow = {
id: 2,
provider: '91',
platform: 'kuaishou',
shop_id: '4269276762',
shop_name: '独角兽游戏专营店',
platform_order_id: '2625301841249202',
order_status: 'paid',
pay_status: 'paid',
buyer_id: '',
buyer_name: '',
receiver_contact: '',
total_amount: 5200,
currency: 'CNY',
raw_payload_json: {
source: 'kuaishou_send_code',
body: {
itemTitle: '和平精英地铁逃生装备满钻低价苏尔南怒嚎暗潮手枪',
num: 1,
ext: '{"skuNick":"安卓血宴1钻"}',
},
},
paid_at: '2026-09-10T09:18:40.000Z',
created_at: '2026-09-10T09:18:40.000Z',
updated_at: '2026-09-10T09:18:40.000Z',
}
const mapped = mapAdminOrderListItem(order, { orderItems: [], tasks: [] })
assert.equal(mapped.itemTitle, '和平精英地铁逃生装备满钻低价苏尔南怒嚎暗潮手枪')
assert.equal(mapped.skuNick, '安卓血宴1钻')
assert.equal(mapped.itemCount, 1)
assert.equal(mapped.totalQuantity, 1)
assert.equal(mapped.itemSummary, '和平精英地铁逃生装备满钻低价苏尔南怒嚎暗潮手枪 (安卓血宴1钻)')
})
test('summarizeOrderItems formats multiple items cleanly', () => {
const items: OrderItemRow[] = [
{
id: 1,
order_id: 1,
sku_code: 'SKU1',
sku_name: '规格A',
quantity: 1,
spec_json: { itemTitle: '商品1', skuNick: '规格A' },
},
{
id: 2,
order_id: 1,
sku_code: 'SKU2',
sku_name: '规格B',
quantity: 1,
spec_json: { itemTitle: '商品2', skuNick: '规格B' },
},
]
const summary = summarizeOrderItems(items)
assert.equal(summary, '商品1 (规格A) 等 2 项')
})