package cn.iocoder.yudao.module.mes.service.safety;
|
import cn.iocoder.yudao.module.mes.controller.admin.safety.vo.risk.SafetyRiskSourceSaveReqVO;
|
import cn.iocoder.yudao.module.mes.dal.dataobject.safety.SafetyRiskSourceDO;
|
import cn.iocoder.yudao.module.mes.dal.mysql.safety.SafetyRiskSourceMapper;
|
import org.junit.jupiter.api.Test;
|
import org.mockito.ArgumentCaptor;
|
import org.springframework.test.util.ReflectionTestUtils;
|
import java.math.BigDecimal;
|
import static org.junit.jupiter.api.Assertions.*;
|
import static org.mockito.Mockito.*;
|
|
class SafetyRiskSourceServiceTest {
|
@Test void savingAboveLimitCreatesAlarmWithObservationTime() {
|
var service=new SafetyRiskSourceService();var mapper=mock(SafetyRiskSourceMapper.class);
|
ReflectionTestUtils.setField(service,"mapper",mapper);
|
var req=new SafetyRiskSourceSaveReqVO();req.setName("测试危险源");req.setCategory("MAJOR");req.setMetricName("温度");
|
req.setUpperLimit(BigDecimal.TEN);req.setCurrentValue(new BigDecimal("11"));
|
service.save(req);
|
var captor=ArgumentCaptor.forClass(SafetyRiskSourceDO.class);verify(mapper).insert(captor.capture());
|
assertEquals("ALARM",captor.getValue().getRiskStatus());assertNotNull(captor.getValue().getObservedAt());
|
}
|
@Test void invalidRangeDoesNotInsert() {
|
var service=new SafetyRiskSourceService();var mapper=mock(SafetyRiskSourceMapper.class);
|
ReflectionTestUtils.setField(service,"mapper",mapper);
|
var req=new SafetyRiskSourceSaveReqVO();req.setLowerLimit(BigDecimal.TEN);req.setUpperLimit(BigDecimal.ONE);
|
assertThrows(RuntimeException.class,()->service.save(req));verify(mapper,never()).insert(any(SafetyRiskSourceDO.class));
|
}
|
}
|