feat(expenses): add authoritative pre-review workflow

This commit is contained in:
caoxiaozhu
2026-07-16 11:42:08 +08:00
parent ae3f02c35a
commit 6bdf65bc24
52 changed files with 4300 additions and 1069 deletions

View File

@@ -0,0 +1,51 @@
import assert from 'node:assert/strict'
import test from 'node:test'
import {
preReviewExpenseClaim,
submitExpenseClaim
} from '../src/services/reimbursements.js'
test('reimbursement service sends pre-review request identity and submit handshake payload', async () => {
const requests = []
const originalFetch = globalThis.fetch
globalThis.fetch = async (url, options = {}) => {
requests.push({ url: String(url), options })
return {
ok: true,
status: 200,
async json() {
return { ok: true }
}
}
}
try {
await preReviewExpenseClaim('claim / 001', 'pre-review:test-request-001')
await submitExpenseClaim('claim / 001', {
pre_review_id: 'review-ready-001',
input_fingerprint: 'sha256:ready-input'
})
} finally {
globalThis.fetch = originalFetch
}
assert.equal(requests.length, 2)
assert.equal(
requests[0].url,
'/api/v1/reimbursements/claims/claim%20%2F%20001/pre-review'
)
assert.equal(requests[0].options.method, 'POST')
assert.equal(requests[0].options.headers['X-Request-ID'], 'pre-review:test-request-001')
assert.equal(requests[0].options.body, '{}')
assert.equal(
requests[1].url,
'/api/v1/reimbursements/claims/claim%20%2F%20001/submit'
)
assert.equal(requests[1].options.method, 'POST')
assert.deepEqual(JSON.parse(requests[1].options.body), {
pre_review_id: 'review-ready-001',
input_fingerprint: 'sha256:ready-input'
})
})