import assert from 'node:assert/strict' import test from 'node:test' import { buildOrderClaimUrl, pickOrderItemClaimTask, resolveClaimTokenExpiration, } from './claim-service.js' test('领取链接默认可配置为长期有效', () => { assert.equal(resolveClaimTokenExpiration('2026-08-11T08:00:00.000Z', 0), null) }) test('领取链接保留正整数小时的限时配置能力', () => { assert.equal( resolveClaimTokenExpiration('2026-08-11T08:00:00.000Z', 24), '2026-08-12T08:00:00.000Z', ) }) test('所有来源统一生成 /h5/<订单号> 领取链接', () => { const orderNo = '6919156612984680391' assert.equal( buildOrderClaimUrl(orderNo, 'https://x.ngrok-free.app/#/claim'), `https://x.ngrok-free.app/h5/${orderNo}`, ) assert.equal( buildOrderClaimUrl(orderNo, 'https://x.ngrok-free.app/claim/'), `https://x.ngrok-free.app/h5/${orderNo}`, ) assert.equal( buildOrderClaimUrl(orderNo, 'https://x.ngrok-free.app/custom'), `https://x.ngrok-free.app/custom/h5/${orderNo}`, ) assert.equal( buildOrderClaimUrl(orderNo, 'https://x.ngrok-free.app/h5///'), `https://x.ngrok-free.app/h5/${orderNo}`, ) assert.equal( buildOrderClaimUrl(orderNo, 'https://x.ngrok-free.app/h5/old-token'), `https://x.ngrok-free.app/h5/${orderNo}`, ) assert.equal( buildOrderClaimUrl(orderNo, 'https://x.ngrok-free.app/claim/old-token'), `https://x.ngrok-free.app/h5/${orderNo}`, ) }) test('订单号或领取基址缺失/无效时返回空串', () => { assert.equal(buildOrderClaimUrl('', 'https://x/claim'), '') assert.equal(buildOrderClaimUrl(null, 'https://x/claim'), '') assert.equal(buildOrderClaimUrl('6919156612984680391', ''), '') assert.equal(buildOrderClaimUrl('6919156612984680391', 'not-a-url'), '') }) test('pickOrderItemClaimTask 取该订单项 task id 最小且带 token 的单元', () => { const picked = pickOrderItemClaimTask( [ { id: 12, order_item_id: 7, claim_token: 'token-12' }, { id: 10, order_item_id: 7, primary_claim_token: 'token-10' }, { id: 9, order_item_id: 7, claim_token: '' }, { id: 11, order_item_id: 8, claim_token: 'token-11' }, ], 7, ) assert.deepEqual(picked, { taskId: 10, token: 'token-10', taskCount: 3, tokenTaskCount: 2, }) }) test('pickOrderItemClaimTask 区分「有任务但没 token」与「压根没任务」', () => { const withoutToken = pickOrderItemClaimTask( [ { id: 1, order_item_id: 7, claim_token: '' }, { id: 2, order_item_id: 7, claim_token: '' }, ], 7, ) assert.equal(withoutToken.taskId, null) assert.equal(withoutToken.token, '') assert.equal(withoutToken.taskCount, 2) assert.equal(withoutToken.tokenTaskCount, 0) const empty = { taskId: null, token: '', taskCount: 0, tokenTaskCount: 0 } assert.deepEqual( pickOrderItemClaimTask([{ id: 1, order_item_id: 8, claim_token: 'x' }], 7), empty, ) assert.deepEqual(pickOrderItemClaimTask([], 7), empty) assert.deepEqual(pickOrderItemClaimTask(null, 7), empty) assert.deepEqual( pickOrderItemClaimTask([{ id: 1, order_item_id: 7, claim_token: 'x' }], ''), empty, ) })