Files
admin-web/src/modules/overseas-warehouse/components/RelabelInventoryItemsEditor.test.ts
T
2026-10-20 14:00:49 +08:00

28 lines
2.3 KiB
TypeScript

import ElementPlus from 'element-plus'
import { flushPromises, mount } from '@vue/test-utils'
import { describe, expect, it, vi } from 'vitest'
import { listRelabelInventoryCandidates } from '../api/relabelOrders'
import RelabelInventoryItemsEditor from './RelabelInventoryItemsEditor.vue'
vi.mock('../api/relabelOrders', () => ({ listRelabelInventoryCandidates: vi.fn() }))
describe('formal relabel source tasks', () => {
it('submits one carton with long source IDs and independently editable SKU pieces; warehouse change clears it', async () => {
vi.mocked(listRelabelInventoryCandidates).mockResolvedValue([{ inventoryBalanceId: '9007199254740993', inboundOrderId: '9007199254740994', inboundOrderNo: 'IN-1', skuCode: 'A', productNameZh: '商品', availablePackages: 1, sourceType: 'INBOUND', positions: [{ positionId: '9007199254740995', palletNo: 'P1', availablePackages: 1 }] }])
const wrapper = mount(RelabelInventoryItemsEditor, { props: { customerId:'C', warehouseId:'W',operationType:'CARTON_AND_SKU',shipmentNo:'S',destination:'SCK8',requirement:'要求' }, global:{plugins:[ElementPlus]} })
await flushPromises()
wrapper.findComponent({name:'ElSelect'}).vm.$emit('update:modelValue','inventory:9007199254740995')
await flushPromises()
await wrapper.findAll('button').find(button => button.text() === '添加箱任务')!.trigger('click'); await flushPromises()
await wrapper.findAll('input').find(input => input.attributes('maxlength') === '255')!.setValue('BOX-1')
await wrapper.get('input[aria-label="新 SKU"]').setValue('B')
wrapper.findComponent({name:'ElInputNumber'}).vm.$emit('update:modelValue',8)
await flushPromises()
const items = wrapper.emitted('update:items')!.at(-1)![0] as Array<Record<string, unknown>>
expect(items).toMatchObject([{sourceInventoryBalanceId:'9007199254740993',sourceInventoryPositionId:'9007199254740995',sourceInboundOrderId:'9007199254740994',cartonMark:'BOX-1',totalPackageCount:1,notifiedPackageCount:1,destinationFbaWarehouseCode:'SCK8',skuItems:[{skuCode:'A',newSkuCode:'B',quantity:8}]}])
expect(items[0]).not.toHaveProperty('sourceLabel')
await wrapper.setProps({warehouseId:'OTHER'}); await flushPromises()
expect(wrapper.emitted('update:items')!.at(-1)![0]).toEqual([])
expect(listRelabelInventoryCandidates).toHaveBeenLastCalledWith('C','OTHER')
wrapper.unmount()
})
})