Files
X-Financial/web/tests/document-protocol-constants.test.mjs
2026-06-23 11:21:18 +08:00

40 lines
1.7 KiB
JavaScript

import assert from 'node:assert/strict'
import test from 'node:test'
import {
DOCUMENT_TYPE_APPLICATION,
DOCUMENT_TYPE_LABELS,
DOCUMENT_TYPE_REIMBURSEMENT,
INLINE_APPLICATION_STATUS_LABELS,
resolveDocumentTypeLabel
} from '../src/constants/documentProtocol.js'
import { readSourceFile, readSourceSurface } from './helpers/sourceSurface.mjs'
test('document protocol constants centralize document types and labels', () => {
assert.equal(DOCUMENT_TYPE_APPLICATION, 'application')
assert.equal(DOCUMENT_TYPE_REIMBURSEMENT, 'reimbursement')
assert.equal(DOCUMENT_TYPE_LABELS[DOCUMENT_TYPE_APPLICATION], '申请单')
assert.equal(DOCUMENT_TYPE_LABELS[DOCUMENT_TYPE_REIMBURSEMENT], '报销单')
assert.equal(resolveDocumentTypeLabel('application'), '申请单')
assert.equal(resolveDocumentTypeLabel('expense_application'), '申请单')
assert.equal(resolveDocumentTypeLabel('unknown', '单据'), '单据')
})
test('inline application status labels live in the shared document protocol', () => {
assert.equal(INLINE_APPLICATION_STATUS_LABELS.draft, '草稿')
assert.equal(INLINE_APPLICATION_STATUS_LABELS.submitted, '审批中')
assert.equal(INLINE_APPLICATION_STATUS_LABELS.pending_payment, '待付款')
})
test('source surface helper loads one or more source files for source assertions', () => {
const model = readSourceFile('constants/documentProtocol.js')
assert.match(model, /DOCUMENT_TYPE_APPLICATION/)
const combined = readSourceSurface([
'constants/documentProtocol.js',
'composables/workbenchAiMode/workbenchAiApplicationPreviewModel.js'
])
assert.match(combined, /INLINE_APPLICATION_STATUS_LABELS/)
assert.match(combined, /normalizeInlineApplicationStatusLabel/)
})