Files
X-Financial/web/tests/approval-task-components-compile.test.mjs

49 lines
1.5 KiB
JavaScript

import assert from 'node:assert/strict'
import { readFileSync } from 'node:fs'
import test from 'node:test'
import { fileURLToPath } from 'node:url'
import {
compileScript,
compileStyle,
compileTemplate,
parse
} from '@vue/compiler-sfc'
const componentFiles = [
'../src/components/approval/ApprovalTaskQueue.vue',
'../src/components/approval/ApprovalTaskWorkspace.vue',
'../src/components/approval/ApprovalAssignmentDialog.vue',
'../src/components/approval/ApprovalParticipantsDialog.vue',
'../src/components/approval/ApprovalBatchResultPanel.vue'
]
for (const relativeFile of componentFiles) {
test(`${relativeFile} 可以独立编译`, () => {
const filename = fileURLToPath(new URL(relativeFile, import.meta.url))
const source = readFileSync(filename, 'utf8')
const parsed = parse(source, { filename })
assert.deepEqual(parsed.errors, [])
const id = `approval-${relativeFile.replace(/\W+/g, '-')}`
const script = compileScript(parsed.descriptor, { id })
const template = compileTemplate({
source: parsed.descriptor.template?.content || '',
filename,
id,
compilerOptions: { bindingMetadata: script.bindings }
})
assert.deepEqual(template.errors, [])
for (const style of parsed.descriptor.styles) {
const compiledStyle = compileStyle({
source: style.content,
filename,
id,
scoped: style.scoped
})
assert.deepEqual(compiledStyle.errors, [])
}
})
}