package com.ruoyi.quality.controller;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.ruoyi.framework.web.domain.AjaxResult;
|
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
|
import com.ruoyi.quality.dto.QualityInspectDto;
|
import com.ruoyi.quality.pojo.QualityInspect;
|
import com.ruoyi.quality.pojo.QualityInspectParam;
|
import com.ruoyi.quality.service.IQualityInspectFileService;
|
import com.ruoyi.quality.service.IQualityInspectParamService;
|
import com.ruoyi.quality.service.IQualityInspectService;
|
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.mockito.InjectMocks;
|
import org.mockito.Mock;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
|
import java.math.BigDecimal;
|
import java.util.Collections;
|
import java.util.Date;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
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 QualityInspectControllerTest {
|
|
@Mock private IQualityInspectService inspectService;
|
@Mock private IQualityInspectParamService paramService;
|
@Mock private IQualityInspectFileService fileService;
|
@Mock private ProcurementRecordService procurementRecordService;
|
@InjectMocks private QualityInspectController controller;
|
|
@Test
|
void addAcceptsCompleteInspection() {
|
QualityInspectDto dto = validInspection(0);
|
when(inspectService.add(dto)).thenReturn(1);
|
|
AjaxResult result = controller.add(dto);
|
|
assertTrue(result.isSuccess());
|
assertEquals(1, result.get(AjaxResult.DATA_TAG));
|
}
|
|
@Test
|
void addRejectsInspectionWithoutMetrics() {
|
QualityInspectDto dto = validInspection(0);
|
dto.setQualityInspectParams(Collections.emptyList());
|
|
AjaxResult result = controller.add(dto);
|
|
assertTrue(result.isError());
|
assertEquals("当前产品未配置检验指标,请先维护指标", result.get(AjaxResult.MSG_TAG));
|
verify(inspectService, never()).add(any());
|
}
|
|
@Test
|
void addRejectsMetricWithoutTestValue() {
|
QualityInspectDto dto = validInspection(0);
|
dto.getQualityInspectParams().get(0).setTestValue(" ");
|
|
AjaxResult result = controller.add(dto);
|
|
assertTrue(result.isError());
|
assertEquals("请填写“硬度”的检验值", result.get(AjaxResult.MSG_TAG));
|
}
|
|
@Test
|
void addRejectsOutOfRangeValueWhenMarkedQualified() {
|
QualityInspectDto dto = validInspection(0);
|
dto.getQualityInspectParams().get(0).setTestValue("80");
|
|
AjaxResult result = controller.add(dto);
|
|
assertTrue(result.isError());
|
assertTrue(String.valueOf(result.get(AjaxResult.MSG_TAG)).contains("不能按合格保存"));
|
verify(inspectService, never()).add(any());
|
}
|
|
@Test
|
void assignInspectorOnlyUpdatesInspectorField() {
|
QualityInspect request = new QualityInspect();
|
request.setId(9L);
|
request.setCheckName("张检验");
|
QualityInspect stored = new QualityInspect();
|
stored.setId(9L);
|
stored.setInspectState(0);
|
when(inspectService.getById(9L)).thenReturn(stored);
|
when(inspectService.updateById(any(QualityInspect.class))).thenReturn(true);
|
|
AjaxResult result = controller.assignInspector(request);
|
|
assertTrue(result.isSuccess());
|
verify(inspectService).updateById(any(QualityInspect.class));
|
}
|
|
@Test
|
void processInspectionRequiresProcess() {
|
QualityInspectDto dto = validInspection(1);
|
dto.setProcess(null);
|
|
AjaxResult result = controller.add(dto);
|
|
assertTrue(result.isError());
|
assertEquals("过程检验必须选择工序", result.get(AjaxResult.MSG_TAG));
|
}
|
|
@Test
|
void updateRejectsSubmittedInspection() {
|
QualityInspectDto dto = validInspection(2);
|
dto.setId(9L);
|
QualityInspect stored = new QualityInspect();
|
stored.setInspectState(1);
|
when(inspectService.getById(9L)).thenReturn(stored);
|
|
AjaxResult result = controller.update(dto);
|
|
assertTrue(result.isError());
|
assertEquals("已提交的检验记录不能修改", result.get(AjaxResult.MSG_TAG));
|
verify(inspectService, never()).updateQualityInspect(any());
|
}
|
|
@Test
|
void updateAcceptsUnsubmittedInspection() {
|
QualityInspectDto dto = validInspection(2);
|
dto.setId(9L);
|
QualityInspect stored = new QualityInspect();
|
stored.setInspectState(0);
|
when(inspectService.getById(9L)).thenReturn(stored);
|
when(inspectService.updateQualityInspect(dto)).thenReturn(1);
|
|
AjaxResult result = controller.update(dto);
|
|
assertTrue(result.isSuccess());
|
}
|
|
@Test
|
void listPageDelegatesByInspectionType() {
|
Page<QualityInspect> page = new Page<>(1, 10);
|
QualityInspect query = new QualityInspect();
|
query.setInspectType(2);
|
when(inspectService.qualityInspectListPage(page, query)).thenReturn(page);
|
|
AjaxResult result = controller.qualityInspectListPage(page, query);
|
|
assertTrue(result.isSuccess());
|
assertEquals(page, result.get(AjaxResult.DATA_TAG));
|
}
|
|
private QualityInspectDto validInspection(int inspectType) {
|
QualityInspectDto dto = new QualityInspectDto();
|
dto.setInspectType(inspectType);
|
dto.setProductId(10L);
|
dto.setCheckTime(new Date());
|
dto.setQuantity(BigDecimal.ONE);
|
dto.setCheckResult("合格");
|
dto.setProcess(inspectType == 1 ? "装配" : null);
|
QualityInspectParam parameter = new QualityInspectParam();
|
parameter.setParameterItem("硬度");
|
parameter.setStandardValue("50-55");
|
parameter.setTestValue("52");
|
dto.setQualityInspectParams(Collections.singletonList(parameter));
|
return dto;
|
}
|
}
|