This commit is contained in:
2026-08-18 09:09:34 +08:00
parent dcbca0bf85
commit 8046f9b9ee
27 changed files with 230 additions and 83 deletions
@@ -1,4 +1,4 @@
import ElementPlus, { ElMessageBox } from 'element-plus'
import ElementPlus, { ElMessage, ElMessageBox } from 'element-plus'
import { createPinia, setActivePinia } from 'pinia'
import { createMemoryHistory, createRouter } from 'vue-router'
import { enableAutoUnmount, flushPromises, mount } from '@vue/test-utils'
@@ -150,7 +150,8 @@ describe('finance G3/G4 page operations', () => {
}, ['9001'])
})
it('keeps receipt errors in the modal and rejects non-image vouchers before upload', async () => {
it('shows receipt errors as dismissible light messages and rejects non-image vouchers before upload', async () => {
const messageSpy = vi.spyOn(ElMessage, 'error')
const pinia = piniaWithPermissions(['platform:finance:settlement-ar:list', 'platform:finance:receipt:create'])
const wrapper = mount(FinanceFormalSettlementPage, { props: { kind: 'receivable' }, attachTo: document.body, global: { plugins: [pinia, ElementPlus] } })
await flushPromises()
@@ -172,10 +173,12 @@ describe('finance G3/G4 page operations', () => {
vm.selectReceiptFile({ raw: new File(['receipt'], 'receipt.png', { type: 'image/png' }) })
vi.mocked(uploadFinanceVoucher).mockRejectedValueOnce(new ApiResponseError('FIN_400: 凭证校验失败', 'FIN_400', 400, undefined, 'request-1', 'trace-1'))
await vm.submitReceipt()
await flushPromises()
expect(vm.receiptOpen).toBe(true)
expect(vm.receiptError?.message).toContain('FIN_400')
expect(wrapper.text()).toContain('FIN_400')
expect(messageSpy).toHaveBeenCalledWith(expect.objectContaining({ message: expect.stringContaining('FIN_400'), showClose: true, duration: 4500 }))
expect(wrapper.text()).not.toContain('FIN_400')
expect(wrapper.find('[aria-label="结算单应收列表"]').exists()).toBe(true)
})