40 lines
1.7 KiB
JavaScript
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/)
|
|
})
|