admin-vue3/tests/tablet-pdf-preview.test.cjs

61 lines
2.7 KiB
JavaScript

const test = require('node:test')
const assert = require('node:assert/strict')
test('pdf files resolve to local pdf viewer mode and prefer visitUrl as source', async () => {
const { resolveTabletPreviewMode, resolvePdfSourceUrl } =
await import('../src/views/review/tablet/previewMode.mjs')
const payload = {
fileType: 'pdf',
visitUrl: '/admin-api/project/review-tablet/file-preview-source/12/preview-12.pdf?sign=abc',
openUrl: 'http://kkfileview.example.com/onlinePreview?url=xxx'
}
assert.equal(resolveTabletPreviewMode(payload), 'pdf')
assert.equal(resolvePdfSourceUrl(payload, payload.openUrl), payload.visitUrl)
})
test('office files stay on iframe preview mode and keep remote preview url', async () => {
const { resolveTabletPreviewMode, resolvePdfSourceUrl } =
await import('../src/views/review/tablet/previewMode.mjs')
const payload = {
fileType: 'docx',
visitUrl: '/admin-api/project/review-tablet/file-preview-source/12/preview-12.docx?sign=abc',
openUrl: 'http://kkfileview.example.com/onlinePreview?url=xxx'
}
assert.equal(resolveTabletPreviewMode(payload), 'iframe')
assert.equal(resolvePdfSourceUrl(payload, payload.openUrl), payload.openUrl)
})
test('pdf visitUrl with non-client host falls back to same-origin preview-source path', async () => {
const { resolvePdfSourceUrl } = await import('../src/views/review/tablet/previewMode.mjs')
const payload = {
fileType: 'pdf',
visitUrl:
'http://host.docker.internal:48080/admin-api/project/review-tablet/file-preview-source/12/preview-12.pdf?sign=abc',
openUrl: 'http://10.11.74.40:8012/onlinePreview?url=xxx'
}
assert.equal(
resolvePdfSourceUrl(payload, payload.openUrl),
'/admin-api/project/review-tablet/file-preview-source/12/preview-12.pdf?sign=abc'
)
})
test('pdf new window prefers unified preview url instead of raw source url', async () => {
const { resolveNewWindowPreviewUrl } = await import('../src/views/review/tablet/previewMode.mjs')
const payload = {
fileType: 'pdf',
visitUrl: '/admin-api/project/review-tablet/file-preview-source/12/preview-12.pdf?sign=abc',
openUrl: 'http://192.168.10.24:8012/onlinePreview?url=xxx'
}
assert.equal(resolveNewWindowPreviewUrl(payload, payload.visitUrl), payload.openUrl)
})
test('pdf files can fall back to iframe preview mode on touch tablets', async () => {
const { resolveTabletPreviewMode } = await import('../src/views/review/tablet/previewMode.mjs')
const payload = {
fileType: 'pdf',
visitUrl: '/admin-api/project/review-tablet/file-preview-source/12/preview-12.pdf?sign=abc',
openUrl: 'http://192.168.10.24:8012/onlinePreview?url=xxx'
}
assert.equal(resolveTabletPreviewMode(payload, { preferIframeForPdf: true }), 'iframe')
})