29 lines
1.7 KiB
JavaScript
29 lines
1.7 KiB
JavaScript
import test from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { readBlobBusinessMessage } from './blobError.js'
|
|
|
|
const jsonBlob = (value, type = 'application/json') => new Blob([JSON.stringify(value)], { type })
|
|
|
|
test('reads the export limit message from a json blob', async () => {
|
|
const message = '导出数据超过10000条,请缩小时间范围或筛选条件'
|
|
assert.equal(await readBlobBusinessMessage(jsonBlob({ code: 500, msg: message })), message)
|
|
})
|
|
|
|
test('reads the same message when the file type is not json', async () => {
|
|
const message = '导出数据超过10000条,请缩小时间范围或筛选条件'
|
|
assert.equal(await readBlobBusinessMessage(jsonBlob({ code: 500, msg: message }, 'application/octet-stream')), message)
|
|
})
|
|
|
|
test('reads a plain-text export error', async () => {
|
|
const message = '导出数据超过10000条,请缩小时间范围或筛选条件'
|
|
assert.equal(await readBlobBusinessMessage(new Blob([message], { type: 'text/plain' })), message)
|
|
})
|
|
|
|
test('leaves spreadsheet and unrelated json files alone', async () => {
|
|
const sheet = new Blob([new Uint8Array([0x50, 0x4b, 0x03, 0x04, 0x14, 0x00])], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
|
|
assert.equal(await readBlobBusinessMessage(sheet), '')
|
|
assert.equal(await readBlobBusinessMessage(jsonBlob({ versionName: '1.0', versionCode: '1', message: '发版说明' })), '')
|
|
assert.equal(await readBlobBusinessMessage(jsonBlob({ code: 0, msg: 'ok' })), '')
|
|
assert.equal(await readBlobBusinessMessage(jsonBlob({ msg: '导出数据超过10000条,请缩小时间范围或筛选条件' })), '导出数据超过10000条,请缩小时间范围或筛选条件')
|
|
})
|