GuDingZiChan/print-agent/tests/label-document.test.mjs

59 lines
1.9 KiB
JavaScript

import test from 'node:test'
import assert from 'node:assert/strict'
import {
buildAssetLabelPrintHtml,
buildRenderedLabelImagePrintHtml,
formatLabelDate,
splitCodeForDisplay
} from '../src/services/labelDocument.js'
test('splitCodeForDisplay 会优先按连接符拆分较长编码', () => {
const lines = splitCodeForDisplay('JS-PC-210188888')
assert.deepEqual(lines, ['JS-PC-', '210188888'])
})
test('formatLabelDate 会统一输出 YYYY-MM-DD', () => {
assert.equal(formatLabelDate('2026/3/5 09:00:00'), '2026-03-05')
assert.equal(formatLabelDate('2026-03-25T00:00:00.000Z'), '2026-03-25')
assert.equal(formatLabelDate(''), '')
})
test('buildAssetLabelPrintHtml 会生成可直接静默打印的 60x40 标签文档', async () => {
const html = await buildAssetLabelPrintHtml({
companyName: '常州简尚家具有限公司',
items: [
{
id: 1,
equipment_code: 'JS-PC-2101',
equipment_name: '办公主机',
equipment_type: '主机',
purchase_date: '2026-03-01T00:00:00.000Z',
department: {
name: '行政部'
}
}
]
})
assert.match(html, /@page\s*\{\s*size:\s*60mm 40mm;/)
assert.match(html, /常州简尚家具有限公司/)
assert.match(html, /JS-PC-2101/)
assert.match(html, /主机/)
assert.match(html, /2026-03-01/)
assert.match(html, /行政部/)
assert.match(html, /data:image\/png;base64,/)
})
test('buildRenderedLabelImagePrintHtml 会按网页成品 PNG 逐张分页,直接复用网页最终版式', () => {
const html = buildRenderedLabelImagePrintHtml({
images: ['data:image/png;base64,ZmFrZS0x', 'data:image/png;base64,ZmFrZS0y']
})
assert.match(html, /@page\s*\{\s*size:\s*60mm 40mm;/)
assert.equal((html.match(/class="print-page"/g) || []).length, 2)
assert.match(html, /data:image\/png;base64,ZmFrZS0x/)
assert.match(html, /data:image\/png;base64,ZmFrZS0y/)
})