1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package cn.iocoder.yudao.module.mes.service.wm.salesnotice;
 
import cn.iocoder.yudao.module.erp.api.sale.ErpSaleOrderApi;
import cn.iocoder.yudao.module.mes.dal.mysql.wm.salesnotice.MesWmSalesNoticeMapper;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.salesnotice.MesWmSalesNoticeDO;
import org.junit.jupiter.api.Test;
import org.springframework.test.util.ReflectionTestUtils;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.*;
 
class SalesNoticeOrderGuardTest {
    @Test
    void cancelledOrderCannotGenerateDeliveryNotice() {
        var orders = mock(ErpSaleOrderApi.class);
        var notices = mock(MesWmSalesNoticeMapper.class);
        when(orders.lockSaleOrderForNotice(1L, null)).thenThrow(new IllegalArgumentException("订单已作废"));
        var service = new MesWmSalesNoticeServiceImpl();
        ReflectionTestUtils.setField(service, "saleOrderApi", orders);
        ReflectionTestUtils.setField(service, "salesNoticeMapper", notices);
        assertThrows(RuntimeException.class, () -> service.generateSalesNoticeFromSaleOrder(1L));
        verify(notices, never()).insert(any(MesWmSalesNoticeDO.class));
    }
}