package cn.iocoder.yudao.module.mes.service.qc.ncr;
|
|
import cn.iocoder.yudao.framework.common.exception.ServiceException;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ncr.MesQcNcrDO;
|
import cn.iocoder.yudao.module.mes.enums.qc.MesNcrDispositionEnum;
|
import org.junit.jupiter.api.Test;
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
class MesQcNcrStockClosureGuardTest {
|
private final MesQcNcrStockClosureGuard guard = new MesQcNcrStockClosureGuard();
|
|
@Test
|
void blocksInventoryGeneratingDispositionsUntilSourceAndStockAreConnected() {
|
assertThrows(ServiceException.class, () -> guard.validateBeforeDispose(MesNcrDispositionEnum.SCRAP.getType()));
|
assertThrows(ServiceException.class, () -> guard.validateBeforeDispose(MesNcrDispositionEnum.CONCESSION.getType()));
|
assertDoesNotThrow(() -> guard.validateBeforeDispose(MesNcrDispositionEnum.REWORK.getType()));
|
assertDoesNotThrow(() -> guard.validateBeforeDispose(MesNcrDispositionEnum.REPAIR.getType()));
|
}
|
|
@Test
|
void blocksClosingLegacyScrapWithoutDestroyEvidence() {
|
MesQcNcrDO ncr = new MesQcNcrDO().setDisposition(MesNcrDispositionEnum.SCRAP.getType());
|
assertThrows(ServiceException.class, () -> guard.validateBeforeClose(ncr));
|
assertEquals(MesNcrDispositionEnum.SCRAP.getType(), ncr.getDisposition());
|
assertThrows(ServiceException.class, () -> guard.validateBeforeClose(new MesQcNcrDO().setDisposition(MesNcrDispositionEnum.CONCESSION.getType())));
|
assertDoesNotThrow(() -> guard.validateBeforeClose(new MesQcNcrDO().setDisposition(MesNcrDispositionEnum.REWORK.getType())));
|
}
|
}
|