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 项') })