16 lines
1.4 KiB
TypeScript
16 lines
1.4 KiB
TypeScript
import { expect, it, vi } from 'vitest'
|
|
import { shallowMount, flushPromises } from '@vue/test-utils'
|
|
import TransferPickupProgressPanel from './TransferPickupProgressPanel.vue'
|
|
import { getTransferPickupProgress, type PickupProgress } from '../api/transferPickups'
|
|
|
|
vi.mock('../api/transferPickups', () => ({ getTransferPickupProgress: vi.fn(), downloadTransferPickupEvidence: vi.fn() }))
|
|
const progress = (tripNo: string): PickupProgress => ({ tripNo, status: 'ARRIVED', vehiclePlate: 'TEST-1', driverName: '验收司机', driverPhone: '000', plannedDepartureAt: null, actualPackages: 5, pickedAt: null, arrivedAt: null, remark: null, evidence: [] })
|
|
it('ignores an old customer response after switching the order identity', async () => {
|
|
let resolve!: (value: PickupProgress) => void
|
|
vi.mocked(getTransferPickupProgress).mockImplementationOnce(() => new Promise(done => { resolve = done })).mockResolvedValueOnce(progress('TR-NEW'))
|
|
const wrapper = shallowMount(TransferPickupProgressPanel, { props: { customerId: 'C1', transferNo: 'WT-OLD' }, global: { stubs: { ElButton: { template: '<button><slot/></button>' } } } })
|
|
await wrapper.setProps({ customerId: 'C2', transferNo: 'WT-NEW' }); await flushPromises(); resolve(progress('TR-OLD')); await flushPromises()
|
|
expect(wrapper.text()).toContain('TR-NEW'); expect(wrapper.text()).not.toContain('TR-OLD')
|
|
expect(getTransferPickupProgress).toHaveBeenLastCalledWith('WT-NEW', 'C2'); wrapper.unmount()
|
|
})
|