优化
This commit is contained in:
@@ -12,7 +12,7 @@ import { ApiResponseError } from '@/shared/api/http'
|
||||
import { createPlatformExportTask } from '@/modules/downloads'
|
||||
import { listPlatformTenants } from '@/modules/iam'
|
||||
import { showExportTaskCreatedDialog } from '@/shared/components/exportTaskCreatedDialog'
|
||||
import { createReconciliationStatement, getReconciliationStatement, listFinanceFeeSources, listFinanceStatements } from '../api/finance'
|
||||
import { actionReconciliationStatement, createReconciliationStatement, getReconciliationStatement, listFinanceFeeSources, listFinanceStatements } from '../api/finance'
|
||||
import type { FinanceFeeSourceSummary, FinanceReconciliationDetail, FinanceStatementReadModel } from '../types'
|
||||
import FinanceCustomerStatementsView from './FinanceCustomerStatementsView.vue'
|
||||
|
||||
@@ -76,6 +76,29 @@ enableAutoUnmount(afterEach)
|
||||
afterAll(() => vi.unstubAllGlobals())
|
||||
|
||||
describe('FinanceCustomerStatementsView', () => {
|
||||
it('omits reopening voided and rejected statements and ignores stale reopen commands', async () => {
|
||||
vi.mocked(listFinanceStatements).mockResolvedValue([{ ...statement, status: 'VOIDED' }, { ...statement, id: '502', status: 'REJECTED' }])
|
||||
const { wrapper } = await mountPage(['platform:finance:customer-statement:list', 'platform:finance:reconciliation:void'])
|
||||
const page = wrapper.vm as unknown as { handleStatementAction(command: string, row: FinanceStatementReadModel): void }
|
||||
expect(wrapper.text()).not.toContain('重开')
|
||||
page.handleStatementAction('reopen', { ...statement, status: 'VOIDED' })
|
||||
await flushPromises()
|
||||
expect(actionReconciliationStatement).not.toHaveBeenCalled()
|
||||
})
|
||||
|
||||
it('keeps statement rows visible and shows only the business error after a failed action', async () => {
|
||||
const draft = { ...statement, status: 'DRAFT' }
|
||||
vi.mocked(listFinanceStatements).mockResolvedValue([draft])
|
||||
vi.mocked(actionReconciliationStatement).mockRejectedValueOnce(new ApiResponseError('费用已生成新的对账单', 'FIN_409', 409, null, 'REQUEST-FAIL', 'TRACE-FAIL'))
|
||||
const { wrapper } = await mountPage(['platform:finance:customer-statement:list', 'platform:finance:reconciliation:create'])
|
||||
const page = wrapper.vm as unknown as { handleStatementAction(command: string, row: FinanceStatementReadModel): void }
|
||||
page.handleStatementAction('submit', draft)
|
||||
await flushPromises()
|
||||
expect(wrapper.text()).toContain('费用已生成新的对账单')
|
||||
expect(wrapper.text()).toContain('REC-501')
|
||||
expect(wrapper.text()).not.toMatch(/REQUEST-FAIL|TRACE-FAIL|客户对账单加载失败/)
|
||||
})
|
||||
|
||||
beforeEach(() => {
|
||||
vi.stubGlobal('ResizeObserver', ResizeObserverStub)
|
||||
vi.stubGlobal('localStorage', memoryStorage())
|
||||
|
||||
Reference in New Issue
Block a user