2026-08-26 15:48:34 +08:00
|
|
|
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
|
|
|
|
import { overseasHttp } from '@/shared/api/overseasHttp'
|
2026-09-01 19:57:36 +08:00
|
|
|
import { getDeliveryOrder, listDeliveryOrders, listDeliveryReturnInboundOptions, markDeliveryReturn } from './deliveryOrders'
|
2026-08-26 15:48:34 +08:00
|
|
|
|
2026-09-01 19:57:36 +08:00
|
|
|
vi.mock('@/shared/api/overseasHttp', () => ({ overseasHttp: { get: vi.fn(), post: vi.fn() } }))
|
2026-08-26 15:48:34 +08:00
|
|
|
|
|
|
|
|
describe('delivery order API', () => {
|
2026-09-01 19:57:36 +08:00
|
|
|
beforeEach(() => {
|
|
|
|
|
vi.mocked(overseasHttp.get).mockReset()
|
|
|
|
|
vi.mocked(overseasHttp.post).mockReset()
|
|
|
|
|
})
|
2026-08-26 15:48:34 +08:00
|
|
|
|
|
|
|
|
it('passes paging and expanded filters and normalizes page numbers', async () => {
|
|
|
|
|
vi.mocked(overseasHttp.get).mockResolvedValue({ code: '200', data: { records: [], page: '2', size: '20', total: '41', pages: '3' } })
|
|
|
|
|
const result = await listDeliveryOrders({ page: 2, size: 20, documentNo: 'DEL-1', vehiclePlate: 'CA-1' })
|
|
|
|
|
expect(overseasHttp.get).toHaveBeenCalledWith('/platform/v1/last-leg/delivery-orders', { params: { page: 2, size: 20, documentNo: 'DEL-1', vehiclePlate: 'CA-1' } })
|
|
|
|
|
expect(result).toMatchObject({ page: 2, size: 20, total: 41, pages: 3 })
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
it('loads an encoded detail in its explicit customer scope', async () => {
|
|
|
|
|
vi.mocked(overseasHttp.get).mockResolvedValue({ code: '200', data: { order: { deliveryNo: 'DEL/1' }, skus: [], fees: [], operations: [] } })
|
|
|
|
|
await getDeliveryOrder('DEL/1', '1001')
|
2026-08-30 16:40:03 +08:00
|
|
|
expect(overseasHttp.get).toHaveBeenCalledWith('/platform/v1/last-leg/delivery-orders/DEL%2F1', { params: { customerId: '1001', page: 1, size: 200 } })
|
2026-08-26 15:48:34 +08:00
|
|
|
})
|
2026-09-01 19:57:36 +08:00
|
|
|
|
|
|
|
|
it('loads return options and marks a return in the explicit customer scope', async () => {
|
|
|
|
|
vi.mocked(overseasHttp.get).mockResolvedValue({ code: '200', data: [{ inboundOrderId: '9', inboundCode: 'IN-1' }] })
|
|
|
|
|
await listDeliveryReturnInboundOptions('DEL/1', '1001')
|
|
|
|
|
expect(overseasHttp.get).toHaveBeenCalledWith('/platform/v1/last-leg/delivery-orders/DEL%2F1/return-inbound-options', { params: { customerId: '1001' } })
|
|
|
|
|
|
2026-09-09 12:50:39 +08:00
|
|
|
const payload = { inboundOrderId: '9', reason: '客户拒收', returnDirection: 'OVERSEAS_WAREHOUSE' as const, items: [{ outboundPalletItemId: '9007199254740995', inventoryPositionId: '9007199254740996', packageCount: 2 }], idempotencyKey: 'return-1' }
|
2026-09-01 19:57:36 +08:00
|
|
|
vi.mocked(overseasHttp.post).mockResolvedValue({ code: '200', data: { id: '19', exceptionNo: 'EXC-1', status: 'PENDING' } })
|
|
|
|
|
await markDeliveryReturn('DEL/1', '1001', payload)
|
|
|
|
|
expect(overseasHttp.post).toHaveBeenCalledWith('/platform/v1/last-leg/delivery-orders/DEL%2F1/mark-return', payload, { params: { customerId: '1001' } })
|
|
|
|
|
})
|
2026-08-26 15:48:34 +08:00
|
|
|
})
|