import assert from 'node:assert/strict' import test from 'node:test' import { describeGiftEvidence, resolveGiftEvidenceBadge, } from '../src/utils/consignment-evidence.ts' import type { GiftEvidenceReviewStatus } from '../src/types/consignment.ts' /** 故意构造后端未来可能新增的状态,验证未知状态不会崩 */ const FUTURE_STATUS = 'reviewing' as unknown as GiftEvidenceReviewStatus test('赠送凭证标签:四种状态各有文案与配色', () => { assert.deepEqual(resolveGiftEvidenceBadge('none'), { text: '未提交', color: 'default' }) assert.deepEqual(resolveGiftEvidenceBadge('pending'), { text: '待客服验收', color: 'gold' }) assert.deepEqual(resolveGiftEvidenceBadge('accepted'), { text: '已验收', color: 'green' }) assert.deepEqual(resolveGiftEvidenceBadge('submitted'), { text: '已提交', color: 'blue' }) }) test('赠送凭证标签:未知状态回退为未提交 / default', () => { assert.deepEqual(resolveGiftEvidenceBadge(FUTURE_STATUS), { text: '未提交', color: 'default' }) assert.equal(describeGiftEvidence({ status: FUTURE_STATUS, images: ['a.png'] }), '未提交') }) test('未提交(none)只说一句「未提交」', () => { assert.equal(describeGiftEvidence({ status: 'none', images: [] }), '未提交') }) test('未提交但有残留图片与时间时,仍然只说「未提交」', () => { assert.equal( describeGiftEvidence({ status: 'none', images: ['a.png', 'b.png'], submittedAt: '2026-09-17T10:00:00', }), '未提交', ) }) test('待客服验收:按「已提交 N 张,待客服验收」,没有提交时间就不拼时间', () => { assert.equal( describeGiftEvidence({ status: 'pending', images: ['a.png', 'b.png', 'c.png'] }), '已提交 3 张,待客服验收', ) assert.equal( describeGiftEvidence({ status: 'pending', images: ['a.png'], submittedAt: '2026-09-17T10:00:00', }), '已提交 1 张,待客服验收 · 2026-09-17 10:00', ) }) test('已验收:按「已验收(N 张)· 提交时间」', () => { assert.equal( describeGiftEvidence({ status: 'accepted', images: ['a.png', 'b.png', 'c.png'], submittedAt: '2026-09-17T10:00:30', }), '已验收(3 张)· 2026-09-17 10:00', ) }) test('已提交:有图按张数,0 张 / 空数组写「已提交,无截图」', () => { assert.equal(describeGiftEvidence({ status: 'submitted', images: ['a.png'] }), '已提交 1 张') assert.equal( describeGiftEvidence({ status: 'submitted', images: ['a.png', '', ' '] }), '已提交 1 张', ) assert.equal(describeGiftEvidence({ status: 'submitted', images: [] }), '已提交,无截图') }) test('已验收但没截图写「已验收,无截图」;时间非法或空白时省略时间部分', () => { assert.equal(describeGiftEvidence({ status: 'accepted', images: [] }), '已验收,无截图') assert.equal( describeGiftEvidence({ status: 'accepted', images: [], submittedAt: '' }), '已验收,无截图', ) assert.equal( describeGiftEvidence({ status: 'accepted', images: [], submittedAt: ' ' }), '已验收,无截图', ) assert.equal( describeGiftEvidence({ status: 'accepted', images: [], submittedAt: '不是时间' }), '已验收,无截图', ) })