import { readFileSync } from 'node:fs'; import { resolve } from 'node:path'; import { describe, expect, it } from 'vitest'; const receivableApi = readFileSync(resolve(process.cwd(), 'src/api/receivable.ts'), 'utf8'); const page = readFileSync(resolve(process.cwd(), 'src/pages/finance/ReceiptsInvoicesPage.vue'), 'utf8'); describe('oa-08 returned invoice source correction', () => { it('exposes the source document and version on invoice views', () => { expect(receivableApi).toContain('sourceDocumentId?: string | null'); expect(receivableApi).toContain('sourceVersionId?: string | null'); }); it('requires source return points and sends them through the review command', () => { expect(page).toContain('v-model="actionData.returnPoints"'); expect(page).toContain(':options="oa08ReturnPointOptions"'); expect(page).toContain("returnPoints: actionData.decision === 'RETURN' ? actionData.returnPoints : []"); expect(page).toContain('请选择至少一个需要更正的来源字段'); }); it('uses the existing form editor for source correction and hides direct rejection', () => { expect(page).toContain("name: 'FormEditor'"); expect(page).toContain("params: { formType: 'OA-08', documentId: sourceDocumentId }"); expect(page).toContain('v-if="!sourceReviewInvoice" value="REJECT"'); expect(page).toContain("invoiceDetail.sourceDocumentId && invoiceDetail.status === 'RETURNED'"); }); });