修复财务页面竞态并整理采购与运输展示
This commit is contained in:
@@ -24,7 +24,7 @@ function render(status = 'RECEIVING', permissions = ['receive-overseas', 'ship-c
|
||||
}
|
||||
beforeEach(() => { vi.clearAllMocks(); beforeOutbound.mockResolvedValue(null); vi.mocked(submitProcurementWorkflow).mockResolvedValue(workflow()) })
|
||||
describe('simplified procurement operations', () => {
|
||||
it('allows a rejected purchase to be resubmitted without uploading photos and clears the old reason after success', async () => {
|
||||
it('allows a rejected purchase to be resubmitted without uploading photos and hides the old reason after success', async () => {
|
||||
const wrapper = render()
|
||||
const rejected = { ...workflow(), rejectionReason: '请核对', photosNeedUpdate: true, receipts: [
|
||||
{ id: 'r-1', quantity: 2, fileIds: ['old-1'], receivedAt: '' },
|
||||
@@ -39,8 +39,32 @@ describe('simplified procurement operations', () => {
|
||||
expect(uploadProcurementFile).not.toHaveBeenCalled()
|
||||
expect(submitProcurementWorkflow).toHaveBeenCalledWith('OP-1', '1001', 'request-confirmation', { version: 4, idempotencyKey: expect.any(String) })
|
||||
expect(wrapper.emitted('changed')).toHaveLength(1)
|
||||
await wrapper.setProps({ workflow: { ...rejected, status: 'WAIT_CUSTOMER_CONFIRM', version: 5, rejectionReason: null, photosNeedUpdate: false } })
|
||||
await wrapper.setProps({ workflow: { ...rejected, status: 'WAIT_CUSTOMER_CONFIRM', version: 5 } })
|
||||
expect(wrapper.text()).not.toContain('客户驳回原因')
|
||||
expect(wrapper.text()).not.toContain('请核对')
|
||||
await wrapper.setProps({ workflow: { ...rejected, status: 'CONFIRMED', version: 6 } })
|
||||
expect(wrapper.text()).not.toContain('客户驳回原因')
|
||||
expect(wrapper.text()).not.toContain('请核对')
|
||||
})
|
||||
it('hides the previous rejection after receipt photos are updated and shows a new rejection again', async () => {
|
||||
const wrapper = render()
|
||||
const rejected = { ...workflow(), rejectionReason: '照片不清晰', photosNeedUpdate: true, receipts: [
|
||||
{ id: 'r-1', quantity: 2, fileIds: ['old-1'], receivedAt: '' },
|
||||
{ id: 'r-2', quantity: 3, fileIds: ['old-2'], receivedAt: '' },
|
||||
] }
|
||||
await wrapper.setProps({ workflow: rejected })
|
||||
expect(wrapper.text()).toContain('照片不清晰')
|
||||
|
||||
await wrapper.setProps({ workflow: { ...rejected, version: 5, rejectionReason: null, photosNeedUpdate: true } })
|
||||
expect(wrapper.text()).not.toContain('客户驳回原因')
|
||||
expect(wrapper.text()).not.toContain('照片不清晰')
|
||||
expect(wrapper.findAll('button').some(button => button.text() === '重新上传照片')).toBe(true)
|
||||
|
||||
await wrapper.setProps({ workflow: { ...rejected, version: 6, rejectionReason: null, photosNeedUpdate: false } })
|
||||
expect(wrapper.findAll('button').some(button => button.text() === '重新上传照片')).toBe(false)
|
||||
|
||||
await wrapper.setProps({ workflow: { ...rejected, version: 7, rejectionReason: '请补拍完整商品' } })
|
||||
expect(wrapper.text()).toContain('请补拍完整商品')
|
||||
})
|
||||
it('accepts the first and subsequent receipt batches using the remaining purchase quantity', async () => {
|
||||
const wrapper = render()
|
||||
|
||||
Reference in New Issue
Block a user