Files
zkxw/mobile-h5/utils/oa-pdf-preview-query.test.js
T
2026-08-13 16:50:36 +08:00

73 lines
2.0 KiB
JavaScript

import assert from 'node:assert/strict'
import {
buildDirectMinioUrl,
parsePdfPreviewQuery,
pickQueryValue,
safeDecodeURIComponent,
toAbsoluteDownloadUrl
} from './oa-pdf-preview-query.js'
assert.equal(safeDecodeURIComponent('a%2Fb.pdf'), 'a/b.pdf')
assert.equal(safeDecodeURIComponent('100%完成.pdf'), '100%完成.pdf')
assert.equal(
pickQueryValue({ fileUrl: 'k1', f: 'k2' }, ['fileUrl', 'f']),
'k1'
)
assert.equal(pickQueryValue({ FILEURL: 'k-upper' }, ['fileUrl']), 'k-upper')
assert.equal(pickQueryValue({ f: 'short' }, ['fileUrl', 'f']), 'short')
const parsed = parsePdfPreviewQuery({
fileUrl: encodeURIComponent('oa-approval/x.pdf'),
name: 'approval.pdf'
})
assert.equal(parsed.fileUrl, 'oa-approval/x.pdf')
assert.equal(parsed.name, 'approval.pdf')
const fromF = parsePdfPreviewQuery({ f: 'oa-approval/y.pdf' })
assert.equal(fromF.fileUrl, 'oa-approval/y.pdf')
const legacy = parsePdfPreviewQuery({
url: 'https://example.com/a.pdf'
})
assert.equal(legacy.legacyUrl, 'https://example.com/a.pdf')
assert.equal(legacy.fileUrl, '')
const bases = {
apiBaseUrl: 'https://www.chengyantek.cn/api',
minioBaseUrl: 'https://www.chengyantek.cn/minio/zkxw'
}
assert.equal(
toAbsoluteDownloadUrl(
'/minio/zkxw/oa-approval/x.pdf?X-Amz-Signature=abc',
bases
),
'https://www.chengyantek.cn/minio/zkxw/oa-approval/x.pdf?X-Amz-Signature=abc'
)
assert.equal(
toAbsoluteDownloadUrl('https://cdn.example/a.pdf', bases),
'https://cdn.example/a.pdf'
)
assert.equal(
toAbsoluteDownloadUrl('oa-approval/x.pdf', bases),
'https://www.chengyantek.cn/minio/zkxw/oa-approval/x.pdf'
)
assert.equal(
toAbsoluteDownloadUrl('//cdn.example/a.pdf', bases),
'https://cdn.example/a.pdf'
)
assert.equal(
buildDirectMinioUrl('oa-approval/x.pdf', bases),
'https://www.chengyantek.cn/minio/zkxw/oa-approval/x.pdf'
)
assert.equal(
buildDirectMinioUrl(
'/minio/zkxw/oa-approval/x.pdf?X-Amz-Signature=broken',
bases
),
'https://www.chengyantek.cn/minio/zkxw/oa-approval/x.pdf'
)
console.log('oa-pdf-preview-query: ok')