package com.ruoyi.quality.service;
|
|
import com.ruoyi.common.exception.ServiceException;
|
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
|
import com.ruoyi.quality.dto.QualityInspectDto;
|
import com.ruoyi.quality.mapper.QualityInspectMapper;
|
import com.ruoyi.quality.mapper.QualityTestStandardMapper;
|
import com.ruoyi.quality.mapper.QualityUnqualifiedMapper;
|
import com.ruoyi.quality.pojo.QualityInspect;
|
import com.ruoyi.quality.pojo.QualityInspectParam;
|
import com.ruoyi.quality.service.impl.QualityInspectServiceImpl;
|
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
|
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.mockito.InjectMocks;
|
import org.mockito.ArgumentCaptor;
|
import org.mockito.Mock;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
|
import java.util.Collections;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.when;
|
|
@ExtendWith(MockitoExtension.class)
|
class QualityInspectServiceImplTest {
|
|
@Mock private QualityInspectMapper inspectMapper;
|
@Mock private IQualityInspectParamService paramService;
|
@Mock private QualityTestStandardMapper standardMapper;
|
@Mock private QualityUnqualifiedMapper unqualifiedMapper;
|
@Mock private SalesLedgerProductMapper productMapper;
|
@Mock private ProcurementRecordService procurementRecordService;
|
@InjectMocks private QualityInspectServiceImpl service;
|
|
@Test
|
void addPersistsInspectionAndMetrics() {
|
QualityInspectDto dto = new QualityInspectDto();
|
QualityInspectParam parameter = new QualityInspectParam();
|
dto.setQualityInspectParams(Collections.singletonList(parameter));
|
when(inspectMapper.insert(any(QualityInspect.class))).thenAnswer(invocation -> {
|
QualityInspect inspect = invocation.getArgument(0);
|
inspect.setId(12L);
|
return 1;
|
});
|
when(paramService.saveBatch(dto.getQualityInspectParams())).thenReturn(true);
|
|
int result = service.add(dto);
|
|
assertEquals(1, result);
|
ArgumentCaptor<QualityInspect> inspectCaptor = ArgumentCaptor.forClass(QualityInspect.class);
|
verify(inspectMapper).insert(inspectCaptor.capture());
|
assertEquals(0, inspectCaptor.getValue().getInspectState());
|
assertEquals(12L, parameter.getInspectId());
|
}
|
|
@Test
|
void submitRejectsRepeatedSubmissionBeforeCreatingSideEffects() {
|
QualityInspect submitted = new QualityInspect();
|
submitted.setId(5L);
|
submitted.setInspectState(1);
|
when(inspectMapper.selectById(5L)).thenReturn(submitted);
|
|
QualityInspect request = new QualityInspect();
|
request.setId(5L);
|
ServiceException error = assertThrows(ServiceException.class, () -> service.submit(request));
|
|
assertEquals("检验记录已提交,请勿重复操作", error.getMessage());
|
verify(unqualifiedMapper, never()).insert(any());
|
verify(procurementRecordService, never()).add(any());
|
}
|
|
@Test
|
void submitRejectsInspectionWithoutMetrics() {
|
QualityInspect stored = pendingInspection();
|
when(inspectMapper.selectById(5L)).thenReturn(stored);
|
when(paramService.list(any())).thenReturn(Collections.emptyList());
|
|
QualityInspect request = new QualityInspect();
|
request.setId(5L);
|
ServiceException error = assertThrows(ServiceException.class, () -> service.submit(request));
|
|
assertEquals("检验项目为空,不能提交", error.getMessage());
|
}
|
|
@Test
|
void submitRejectsMetricWithoutTestValue() {
|
QualityInspect stored = pendingInspection();
|
QualityInspectParam parameter = new QualityInspectParam();
|
parameter.setParameterItem("硬度");
|
when(inspectMapper.selectById(5L)).thenReturn(stored);
|
when(paramService.list(any())).thenReturn(Collections.singletonList(parameter));
|
|
QualityInspect request = new QualityInspect();
|
request.setId(5L);
|
ServiceException error = assertThrows(ServiceException.class, () -> service.submit(request));
|
|
assertEquals("检验项目“硬度”尚未填写检验值", error.getMessage());
|
}
|
|
private QualityInspect pendingInspection() {
|
QualityInspect stored = new QualityInspect();
|
stored.setId(5L);
|
stored.setInspectState(0);
|
stored.setCheckResult("合格");
|
return stored;
|
}
|
}
|