package com.malk.minglei.controller; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import com.malk.minglei.dto.ApiResponse; import com.malk.minglei.dto.YidaProcessStartRequest; import com.malk.minglei.service.MingleiDocumentService; import com.malk.minglei.service.YidaProcessService; import org.junit.jupiter.api.Test; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.ArgumentMatchers.any; import static org.mockito.BDDMockito.given; import static org.mockito.Mockito.mock; /** * 验证宜搭流程接口的 HTTP 状态和统一响应体结构。 */ class YidaProcessControllerTest { /** * 验证流程发起成功时将实例 ID 写入统一响应的 result 字段。 */ @Test void startReturnsProcessInstanceIdInUnifiedResponse() throws Exception { YidaProcessService yidaProcessService = mock(YidaProcessService.class); given(yidaProcessService.startProcess(any(YidaProcessStartRequest.class))).willReturn("process-instance-1"); YidaProcessController controller = new YidaProcessController(yidaProcessService, mock(MingleiDocumentService.class)); ResponseEntity>> response = controller.start(new YidaProcessStartRequest()); ObjectMapper objectMapper = new ObjectMapper(); Map body = objectMapper.readValue( objectMapper.writeValueAsString(response.getBody()), new TypeReference>() { }); assertEquals(HttpStatus.CREATED, response.getStatusCode()); assertEquals(200, body.get("code")); assertEquals(true, body.get("isSuccess")); assertEquals("process-instance-1", ((Map) body.get("result")).get("processInstanceId")); } }