package cn.iocoder.yudao.module.mes.service.dv.meteringcheck; import cn.iocoder.yudao.module.mes.controller.admin.dv.meteringcheck.vo.MesDvMeteringCheckSaveReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.dv.metering.MesDvMeteringDO; import cn.iocoder.yudao.module.mes.dal.dataobject.dv.meteringcheck.MesDvMeteringCheckDO; import cn.iocoder.yudao.module.mes.dal.mysql.dv.meteringcheck.MesDvMeteringCheckMapper; import cn.iocoder.yudao.module.mes.service.dv.metering.MesDvMeteringService; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.*; import org.mockito.junit.jupiter.MockitoExtension; import java.time.LocalDate; import static org.junit.jupiter.api.Assertions.*; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.*; @ExtendWith(MockitoExtension.class) class MesDvMeteringCheckManualUserTest { @Mock MesDvMeteringCheckMapper mapper; @Mock MesDvMeteringService meteringService; @InjectMocks MesDvMeteringCheckServiceImpl service; private MesDvMeteringCheckSaveReqVO request() { var req = new MesDvMeteringCheckSaveReqVO(); req.setMeteringId(1L); req.setCheckCode("CK01"); req.setCheckDate(LocalDate.of(2026,10,12)); req.setCheckResult(1); req.setCheckUserId(7L); var metering = new MesDvMeteringDO(); metering.setCheckCycleCount(12); when(meteringService.getMetering(1L)).thenReturn(metering); return req; } @Test void storesManualNameWithoutUserLinkAndKeepsCalibrationDateCalculation() { var req = request(); req.setCheckUserName(" 外部检验员张三 "); service.createMeteringCheck(req); var record = ArgumentCaptor.forClass(MesDvMeteringCheckDO.class); verify(mapper).insert(record.capture()); assertEquals("外部检验员张三", record.getValue().getCheckUserName()); assertNull(record.getValue().getCheckUserId()); assertEquals(LocalDate.of(2027,10,12), record.getValue().getNextCheckDate()); } @Test void permitsClearingManualNameAndRemovesOldUserSelectionOnEdit() { var req = request(); req.setId(9L); req.setCheckUserName(" "); when(mapper.selectById(9L)).thenReturn(new MesDvMeteringCheckDO()); service.updateMeteringCheck(req); var record = ArgumentCaptor.forClass(MesDvMeteringCheckDO.class); verify(mapper).updateById(record.capture()); assertEquals("", record.getValue().getCheckUserName()); assertNull(record.getValue().getCheckUserId()); } }