54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
import assert from 'node:assert/strict'
|
|
import {
|
|
isImageFileType,
|
|
fileExtLabel,
|
|
formatInvoiceDateYmd,
|
|
buildAttachItemsFromInvoiceRows,
|
|
mergeInvoicePicksByDraftKeys
|
|
} from '../utils/bxInvoiceThumb.js'
|
|
|
|
assert.equal(isImageFileType('image/jpeg'), true)
|
|
assert.equal(isImageFileType('application/pdf'), false)
|
|
assert.equal(fileExtLabel('a.PDF'), 'PDF')
|
|
assert.equal(formatInvoiceDateYmd('2026-09-16T12:00:00'), '2026-09-16')
|
|
assert.equal(formatInvoiceDateYmd(''), '—')
|
|
|
|
const rows = [
|
|
{
|
|
id: 'inv1',
|
|
amount: 100,
|
|
createTime: '2026-09-01T10:00:00',
|
|
attachments: [
|
|
{ id: 'a1', fileName: 'x.jpg', fileType: 'image/jpeg' },
|
|
{ id: 'a2', fileName: 'y.pdf', fileType: 'application/pdf' }
|
|
]
|
|
}
|
|
]
|
|
const items = buildAttachItemsFromInvoiceRows(rows)
|
|
assert.equal(items.length, 2)
|
|
assert.equal(items[0].key, 'inv1:a1')
|
|
assert.equal(items[1].fileName, 'y.pdf')
|
|
|
|
const prev = [
|
|
{
|
|
key: 'inv9:a9',
|
|
invoiceId: 'inv9',
|
|
attachmentId: 'a9',
|
|
amount: 9,
|
|
createTime: '2026-08-01',
|
|
fileName: 'old.jpg',
|
|
fileType: 'image/jpeg',
|
|
previewUrl: 'http://old'
|
|
}
|
|
]
|
|
const merged = mergeInvoicePicksByDraftKeys(
|
|
['inv9:a9', 'inv1:a1'],
|
|
items,
|
|
prev
|
|
)
|
|
assert.equal(merged.length, 2)
|
|
assert.ok(merged.some((p) => p.key === 'inv9:a9' && p.previewUrl === 'http://old'))
|
|
assert.ok(merged.some((p) => p.key === 'inv1:a1'))
|
|
|
|
console.log('bxInvoiceThumb ok')
|