Files
X-Financial/web/tests/knowledge-preview-mode.test.mjs

142 lines
3.3 KiB
JavaScript

import assert from 'node:assert/strict'
import {
resolveKnowledgePreviewMode,
shouldRenderOnlyOfficeHost,
shouldRenderOnlyOfficePreview
} from '../src/views/scripts/knowledgePreviewMode.js'
function testPrefersOnlyOfficeForSupportedOfficeFileWhenAvailable() {
const document = {
extension: 'xlsx',
previewKind: 'table'
}
assert.equal(resolveKnowledgePreviewMode(document, { onlyOfficeAvailable: true }), 'onlyoffice')
}
function testFallsBackToStructuredPreviewForOfficeFileWhenOnlyOfficeUnavailable() {
const document = {
extension: 'xlsx',
previewKind: 'table'
}
assert.equal(resolveKnowledgePreviewMode(document, { onlyOfficeAvailable: false }), 'table')
}
function testUsesPreviewKindForNonOnlyOfficeFile() {
const document = {
extension: 'pdf',
previewKind: 'pdf'
}
assert.equal(resolveKnowledgePreviewMode(document, { onlyOfficeAvailable: false }), 'pdf')
}
function testRendersOnlyOfficeContainerWhileOfficePreviewIsLoading() {
const document = {
extension: 'docx',
previewKind: 'text'
}
assert.equal(
shouldRenderOnlyOfficePreview(document, {
onlyOfficeLoading: true,
onlyOfficeAvailable: false
}),
true
)
}
function testKeepsOnlyOfficeContainerVisibleWhenOfficePreviewHasError() {
const document = {
extension: 'docx',
previewKind: 'text'
}
assert.equal(
shouldRenderOnlyOfficePreview(document, {
onlyOfficeLoading: false,
onlyOfficeAvailable: false,
onlyOfficeError: 'timeout'
}),
true
)
}
function testDoesNotRenderOnlyOfficeContainerAfterFailedMount() {
const document = {
extension: 'xlsx',
previewKind: 'table'
}
assert.equal(
shouldRenderOnlyOfficePreview(document, {
onlyOfficeLoading: false,
onlyOfficeAvailable: false
}),
false
)
}
function testRendersOnlyOfficeHostWhileOfficePreviewIsLoading() {
const document = {
extension: 'pptx',
previewKind: 'slides'
}
assert.equal(
shouldRenderOnlyOfficeHost(document, {
onlyOfficeLoading: true,
onlyOfficeAvailable: false
}),
true
)
}
function testKeepsOnlyOfficeHostVisibleWhenOfficePreviewHasError() {
const document = {
extension: 'xlsx',
previewKind: 'table'
}
assert.equal(
shouldRenderOnlyOfficeHost(document, {
onlyOfficeLoading: false,
onlyOfficeAvailable: false,
onlyOfficeError: 'timeout'
}),
true
)
}
function testDoesNotRenderOnlyOfficeHostForNonOfficeDocuments() {
const document = {
extension: 'pdf',
previewKind: 'pdf'
}
assert.equal(
shouldRenderOnlyOfficeHost(document, {
onlyOfficeLoading: true,
onlyOfficeAvailable: false
}),
false
)
}
function run() {
testPrefersOnlyOfficeForSupportedOfficeFileWhenAvailable()
testFallsBackToStructuredPreviewForOfficeFileWhenOnlyOfficeUnavailable()
testUsesPreviewKindForNonOnlyOfficeFile()
testRendersOnlyOfficeContainerWhileOfficePreviewIsLoading()
testKeepsOnlyOfficeContainerVisibleWhenOfficePreviewHasError()
testDoesNotRenderOnlyOfficeContainerAfterFailedMount()
testRendersOnlyOfficeHostWhileOfficePreviewIsLoading()
testKeepsOnlyOfficeHostVisibleWhenOfficePreviewHasError()
testDoesNotRenderOnlyOfficeHostForNonOfficeDocuments()
console.log('knowledge preview mode tests passed')
}
run()