package com.ruoyi.quality.controller; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.quality.pojo.QualityUnqualified; import com.ruoyi.quality.service.IQualityUnqualifiedService; 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.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 QualityUnqualifiedControllerTest { @Mock private IQualityUnqualifiedService service; @InjectMocks private QualityUnqualifiedController controller; @Test void addCreatesPendingRecordByDefault() { QualityUnqualified record = pendingRecord(); record.setInspectState(null); when(service.save(record)).thenReturn(true); AjaxResult result = controller.add(record); assertTrue(result.isSuccess()); assertEquals(0, record.getInspectState()); } @Test void addRejectsMissingReason() { QualityUnqualified record = pendingRecord(); record.setDefectivePhenomena(" "); AjaxResult result = controller.add(record); assertTrue(result.isError()); assertEquals("请填写不合格原因或现象", result.get(AjaxResult.MSG_TAG)); verify(service, never()).save(any()); } @Test void processedRecordRequiresTreatmentMethod() { QualityUnqualified record = processedRecord(); record.setDealType(null); AjaxResult result = controller.add(record); assertTrue(result.isError()); assertEquals("请选择处理方式", result.get(AjaxResult.MSG_TAG)); } @Test void processedRecordRequiresTreatmentResult() { QualityUnqualified record = processedRecord(); record.setDealResult(null); AjaxResult result = controller.add(record); assertTrue(result.isError()); assertEquals("请填写处理结果", result.get(AjaxResult.MSG_TAG)); } @Test void updateReportsMissingRecord() { QualityUnqualified record = processedRecord(); record.setId(99L); when(service.getById(99L)).thenReturn(null); AjaxResult result = controller.update(record); assertTrue(result.isError()); assertEquals("不合格记录不存在", result.get(AjaxResult.MSG_TAG)); } @Test void updateClosesCompleteRecord() { QualityUnqualified record = processedRecord(); record.setId(8L); when(service.getById(8L)).thenReturn(pendingRecord()); when(service.updateById(record)).thenReturn(true); AjaxResult result = controller.update(record); assertTrue(result.isSuccess()); } private QualityUnqualified pendingRecord() { QualityUnqualified record = new QualityUnqualified(); record.setInspectType(0); record.setInspectState(0); record.setProductId(10L); record.setQuantity(BigDecimal.ONE); record.setDefectivePhenomena("表面划伤"); return record; } private QualityUnqualified processedRecord() { QualityUnqualified record = pendingRecord(); record.setInspectState(1); record.setDealType("rework"); record.setDealResult("返工后复检合格"); record.setDealName("张三"); record.setDealTime(new Date()); return record; } }