test(admin): cover booking-scoped trucking
This commit is contained in:
@@ -57,6 +57,7 @@ describe('TruckAppointmentForm booking-only behavior', () => {
|
||||
const labels = wrapper.findAllComponents({ name: 'ElOption' }).map((option) => String(option.props('label') || ''))
|
||||
expect(labels.some((label) => label.includes('OB-1') && label.includes('BL-1'))).toBe(true)
|
||||
expect(labels.some((label) => label.includes('CAB-'))).toBe(false)
|
||||
expect(candidates[0]).not.toHaveProperty('containerBookingId')
|
||||
const emitted = wrapper.emitted('update:modelValue')?.at(-1)?.[0] as SaveTruckAppointmentRequest
|
||||
expect(emitted.oceanBookingId).toBe('booking-1')
|
||||
expect(emitted.billOfLadingNo).toBe('BL-1')
|
||||
@@ -65,6 +66,30 @@ describe('TruckAppointmentForm booking-only behavior', () => {
|
||||
wrapper.unmount()
|
||||
})
|
||||
|
||||
it('keeps only the latest candidate response when option reloads overlap', async () => {
|
||||
let resolveSlow!: (value: Awaited<ReturnType<typeof listTruckAppointmentCandidates>>) => void
|
||||
let resolveFast!: (value: Awaited<ReturnType<typeof listTruckAppointmentCandidates>>) => void
|
||||
vi.mocked(listTruckAppointmentCandidates)
|
||||
.mockResolvedValueOnce({ records: candidates, page: 1, size: 200, total: candidates.length, pages: 1 })
|
||||
.mockImplementationOnce(() => new Promise((resolve) => { resolveSlow = resolve }))
|
||||
.mockImplementationOnce(() => new Promise((resolve) => { resolveFast = resolve }))
|
||||
const wrapper = mount(TruckAppointmentForm, { props: { modelValue: { ...model } }, global: { plugins: [ElementPlus] } })
|
||||
await flushPromises()
|
||||
const vm = wrapper.vm as unknown as { loadOptions: () => Promise<void> }
|
||||
const slow = vm.loadOptions()
|
||||
const fast = vm.loadOptions()
|
||||
resolveFast({ records: [candidates[1]!], page: 1, size: 200, total: 1, pages: 1 })
|
||||
await fast
|
||||
resolveSlow({ records: [candidates[0]!], page: 1, size: 200, total: 1, pages: 1 })
|
||||
await slow
|
||||
await flushPromises()
|
||||
|
||||
const labels = wrapper.findAllComponents({ name: 'ElOption' }).map((option) => String(option.props('label') || ''))
|
||||
expect(labels.some((label) => label.includes('OB-2'))).toBe(true)
|
||||
expect(labels.some((label) => label.includes('OB-1'))).toBe(false)
|
||||
wrapper.unmount()
|
||||
})
|
||||
|
||||
it('replaces frozen booking snapshots when switching the selected booking', async () => {
|
||||
const wrapper = mount(TruckAppointmentForm, { props: { modelValue: { ...model } }, global: { plugins: [ElementPlus] } })
|
||||
await flushPromises()
|
||||
|
||||
Reference in New Issue
Block a user