YidaProcessControllerTest.java 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package com.malk.minglei.controller;
  2. import com.fasterxml.jackson.core.type.TypeReference;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import com.malk.minglei.dto.ApiResponse;
  5. import com.malk.minglei.dto.YidaProcessStartRequest;
  6. import com.malk.minglei.service.MingleiDocumentService;
  7. import com.malk.minglei.service.YidaProcessService;
  8. import org.junit.jupiter.api.Test;
  9. import org.springframework.http.HttpStatus;
  10. import org.springframework.http.ResponseEntity;
  11. import java.util.Map;
  12. import static org.junit.jupiter.api.Assertions.assertEquals;
  13. import static org.mockito.ArgumentMatchers.any;
  14. import static org.mockito.BDDMockito.given;
  15. import static org.mockito.Mockito.mock;
  16. /**
  17. * 验证宜搭流程接口的 HTTP 状态和统一响应体结构。
  18. */
  19. class YidaProcessControllerTest {
  20. /**
  21. * 验证流程发起成功时将实例 ID 写入统一响应的 result 字段。
  22. */
  23. @Test
  24. void startReturnsProcessInstanceIdInUnifiedResponse() throws Exception {
  25. YidaProcessService yidaProcessService = mock(YidaProcessService.class);
  26. given(yidaProcessService.startProcess(any(YidaProcessStartRequest.class))).willReturn("process-instance-1");
  27. YidaProcessController controller = new YidaProcessController(yidaProcessService, mock(MingleiDocumentService.class));
  28. ResponseEntity<ApiResponse<Map<String, String>>> response = controller.start(new YidaProcessStartRequest());
  29. ObjectMapper objectMapper = new ObjectMapper();
  30. Map<String, Object> body = objectMapper.readValue(
  31. objectMapper.writeValueAsString(response.getBody()),
  32. new TypeReference<Map<String, Object>>() {
  33. });
  34. assertEquals(HttpStatus.CREATED, response.getStatusCode());
  35. assertEquals(200, body.get("code"));
  36. assertEquals(true, body.get("isSuccess"));
  37. assertEquals("process-instance-1", ((Map<?, ?>) body.get("result")).get("processInstanceId"));
  38. }
  39. }