Files
client-web/src/modules/overseas-warehouse/components/ReviewRejectionNotice.test.mjs
T
2026-10-16 18:25:56 +08:00

30 lines
1.3 KiB
JavaScript

import test from 'node:test'
import assert from 'node:assert/strict'
import { readFileSync } from 'node:fs'
import { createSSRApp } from 'vue'
import { renderToString } from 'vue/server-renderer'
import { parse } from 'vue/compiler-sfc'
const source = readFileSync(new URL('./ReviewRejectionNotice.vue', import.meta.url), 'utf8')
const template = parse(source).descriptor.template.content
const render = (status, reason) => renderToString(createSSRApp({ template, props: ['status', 'reason'] }, { status, reason }))
test('rejected documents display the actual reason safely', async () => {
const html = await render('REJECTED', '箱数不符\n请核对 <SKU>')
assert.match(html, /驳回原因/)
assert.match(html, /箱数不符\n请核对 &lt;SKU&gt;/)
assert.match(html, /role="alert"/)
})
test('non-rejected documents do not show an old rejection reason', async () => {
for (const status of ['PENDING_REVIEW', 'APPROVED', 'COMPLETED', undefined]) {
assert.doesNotMatch(await render(status, '旧审核原因'), /旧审核原因|驳回原因/)
}
})
test('legacy rejection without a reason has an explicit fallback', async () => {
for (const reason of [undefined, '', ' ']) {
assert.match(await render('REJECTED', reason), /暂未记录驳回原因/)
}
})