1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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));
    }
}