package com.ruoyi.lsfx.controller; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.lsfx.client.CreditParseClient; import com.ruoyi.lsfx.domain.response.CreditParseResponse; import com.ruoyi.lsfx.exception.LsfxApiException; 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 org.springframework.mock.web.MockMultipartFile; import java.io.File; import java.nio.charset.StandardCharsets; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertSame; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) class CreditParseControllerTest { @Mock private CreditParseClient client; @InjectMocks private CreditParseController controller; @Test void parse_shouldRejectEmptyFile() { AjaxResult result = controller.parse(null, null, null); assertEquals(500, result.get("code")); } @Test void parse_shouldRejectNonHtmlFile() { MockMultipartFile file = new MockMultipartFile( "file", "credit.pdf", "application/pdf", "x".getBytes(StandardCharsets.UTF_8) ); AjaxResult result = controller.parse(file, null, null); assertEquals(500, result.get("code")); } @Test void shouldUseDefaultModelAndTypeWhenMissing() { MockMultipartFile file = new MockMultipartFile( "file", "credit.html", "text/html", "".getBytes(StandardCharsets.UTF_8) ); CreditParseResponse response = new CreditParseResponse(); response.setStatusCode("0"); when(client.parse(eq("LXCUSTALL"), eq("PERSON"), any(File.class))).thenReturn(response); AjaxResult result = controller.parse(file, null, null); assertEquals(200, result.get("code")); assertSame(response, result.get("data")); } @Test void shouldReturnAjaxErrorWhenClientThrows() { MockMultipartFile file = new MockMultipartFile( "file", "credit.html", "text/html", "".getBytes(StandardCharsets.UTF_8) ); when(client.parse(anyString(), anyString(), any(File.class))) .thenThrow(new LsfxApiException("超时")); AjaxResult result = controller.parse(file, null, null); assertEquals(500, result.get("code")); } }