!41 test(inspectcloseout): 新增销号模块单元测试

Merge pull request !41 from new_new_new/test/inspect_close
This commit is contained in:
new_new_new
2026-06-12 01:09:15 +00:00
committed by Gitee
2 changed files with 392 additions and 0 deletions
@@ -0,0 +1,319 @@
package org.jeecg.inspectcloseout;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
import com.alibaba.fastjson.JSONObject;
import com.jeecg.weibo.exception.BusinessException;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.inspectcloseout.InspectCloseoutConfig.InspectCloseoutProperties;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import java.util.Collections;
import java.util.List;
@ExtendWith(MockitoExtension.class)
class InspectCloseoutFlowTest {
@Mock
private InspectCloseoutConfig inspectCloseoutConfig;
@Mock
private ISysBaseAPI iSysBaseAPI;
private InspectCloseoutFlow flow;
private InspectCloseoutProperties props;
@BeforeEach
void setUp() {
props = new InspectCloseoutProperties();
props.setBusinessKey("businessKey");
props.setJsonDataKey("jsonDataKey");
props.setFormUrl("formUrl");
props.setFlowCode("flowCode");
props.setApplicantKey("applicantKey");
props.setApproverKey("approverKey");
props.setRectifyItemKey("rectifyItemKey");
props.setCloseoutDescKey("closeoutDescKey");
props.setCompletionStatusKey("completionStatusKey");
lenient().when(inspectCloseoutConfig.getInspectCloseout()).thenReturn(props);
// FlowNodeExpression 未使用,传 null
flow = new InspectCloseoutFlow(inspectCloseoutConfig, null, iSysBaseAPI);
}
// ==================== 部门角色用户查询 ====================
@Nested
class DeptRoleUserQuery {
@Test
void getJJDeptLdUserIdList_shouldReturnUserList() {
List<String> users = List.of("user1", "user2");
when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(
InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_LEADER_ROLE_ID))
.thenReturn(users);
assertEquals(users, flow.getJJDeptLdUserIdList());
}
@Test
void getJJDeptLdUserIdList_shouldReturnEmptyList() {
when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(
InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_LEADER_ROLE_ID))
.thenReturn(Collections.emptyList());
assertEquals(Collections.emptyList(), flow.getJJDeptLdUserIdList());
}
@Test
void getJJDeptLdUserIdListLength_shouldReturnCount() {
when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(
InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_LEADER_ROLE_ID))
.thenReturn(List.of("user1", "user2", "user3"));
assertEquals(3, flow.getJJDeptLdUserIdListLength());
}
@Test
void getJJDeptLdUserIdListLength_shouldReturnZeroWhenEmpty() {
when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(
InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_LEADER_ROLE_ID))
.thenReturn(Collections.emptyList());
assertEquals(0, flow.getJJDeptLdUserIdListLength());
}
@Test
void getJJDeptLdWorkerIdList_shouldReturnUserList() {
List<String> users = List.of("worker1");
when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(
InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_WORKER_ROLE_ID))
.thenReturn(users);
assertEquals(users, flow.getJJDeptLdWorkerIdList());
}
@Test
void getJJDeptLdWorkerIdListLength_shouldReturnCount() {
when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(
InspectCloseoutConstant.JJ_DEPT_ID, InspectCloseoutConstant.JJ_DEPT_LEADER_ROLE_ID))
.thenReturn(List.of("user1", "user2"));
assertEquals(2, flow.getJJDeptLdWorkerIdListLength());
}
@Test
void getDqDeptLdUserIdList_shouldReturnUserList() {
List<String> users = List.of("dq_user1");
when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(
InspectCloseoutConstant.DQ_DEPT_ID, InspectCloseoutConstant.DQ_DEPT_WORKER_ROLE_ID))
.thenReturn(users);
assertEquals(users, flow.getDqDeptLdUserIdList());
}
@Test
void getDqDeptLdUserIdListLength_shouldReturnCount() {
when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(
InspectCloseoutConstant.DQ_DEPT_ID, InspectCloseoutConstant.DQ_DEPT_WORKER_ROLE_ID))
.thenReturn(List.of("user1", "user2"));
assertEquals(2, flow.getDqDeptLdUserIdListLength());
}
@Test
void getDqDeptLdUserIdListLength_shouldReturnZeroWhenEmpty() {
when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(
InspectCloseoutConstant.DQ_DEPT_ID, InspectCloseoutConstant.DQ_DEPT_WORKER_ROLE_ID))
.thenReturn(Collections.emptyList());
assertEquals(0, flow.getDqDeptLdUserIdListLength());
}
}
// ==================== JWSJ用户查询 ====================
@Nested
class JWSJUserQuery {
@Test
void getJWSJUser_shouldReturnUniqueUser() {
when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(
InspectCloseoutConstant.SLD_DEPT_ID, InspectCloseoutConstant.SLD_JWSJ_ROLE_ID))
.thenReturn(List.of("jwsj_user"));
assertEquals("jwsj_user", flow.getJWSJUser());
}
@Test
void getJWSJUser_shouldThrowWhenEmpty() {
when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(
InspectCloseoutConstant.SLD_DEPT_ID, InspectCloseoutConstant.SLD_JWSJ_ROLE_ID))
.thenReturn(Collections.emptyList());
assertThrows(BusinessException.class, () -> flow.getJWSJUser());
}
@Test
void getJWSJUser_shouldThrowWhenMultipleUsers() {
when(iSysBaseAPI.getUsersListByDeptIdAndRoleIdLocalApi(
InspectCloseoutConstant.SLD_DEPT_ID, InspectCloseoutConstant.SLD_JWSJ_ROLE_ID))
.thenReturn(List.of("user1", "user2"));
assertThrows(BusinessException.class, () -> flow.getJWSJUser());
}
}
// ==================== JSON 数据解析 ====================
@Nested
class JsonDataParsing {
@Test
void getApproverList_shouldParseCommaSeparated() {
JSONObject json = new JSONObject();
json.put("approverKey", "user1,user2,user3");
List<String> result = flow.getApproverList(json);
assertEquals(3, result.size());
assertTrue(result.contains("user1"));
assertTrue(result.contains("user2"));
assertTrue(result.contains("user3"));
}
@Test
void getApproverList_shouldHandleJsonString() {
String jsonStr = "{\"approverKey\":\"user1,user2\"}";
List<String> result = flow.getApproverList(jsonStr);
assertEquals(2, result.size());
}
@Test
void getApproverList_shouldReturnEmptyWhenFieldMissing() {
JSONObject json = new JSONObject();
List<String> result = flow.getApproverList(json);
assertTrue(result.isEmpty());
}
@Test
void getApproverList_shouldReturnEmptyWhenValueBlank() {
JSONObject json = new JSONObject();
json.put("approverKey", "");
List<String> result = flow.getApproverList(json);
assertTrue(result.isEmpty());
}
@Test
void getApproverList_shouldReturnEmptyWhenJsonDataNull() {
List<String> result = flow.getApproverList(null);
assertTrue(result.isEmpty());
}
@Test
void getApproverListLength_shouldReturnCount() {
JSONObject json = new JSONObject();
json.put("approverKey", "user1,user2,user3");
assertEquals(3, flow.getApproverListLength(json));
}
@Test
void getApproverListLength_shouldReturnZeroWhenEmpty() {
JSONObject json = new JSONObject();
assertEquals(0, flow.getApproverListLength(json));
}
@Test
void getApplicant_shouldReturnApplicantValue() {
JSONObject json = new JSONObject();
json.put("applicantKey", "zhangsan");
assertEquals("zhangsan", flow.getApplicant(json));
}
@Test
void getApplicant_shouldHandleJsonString() {
String jsonStr = "{\"applicantKey\":\"lisi\"}";
assertEquals("lisi", flow.getApplicant(jsonStr));
}
@Test
void getApplicant_shouldReturnNullWhenMissing() {
JSONObject json = new JSONObject();
assertNull(flow.getApplicant(json));
}
@Test
void getApplicant_shouldReturnNullWhenJsonDataNull() {
assertNull(flow.getApplicant(null));
}
@Test
void getRectifyItemId_shouldReturnRectifyItemId() {
JSONObject json = new JSONObject();
json.put("rectifyItemKey", "item-001");
assertEquals("item-001", flow.getRectifyItemId(json));
}
@Test
void getRectifyItemId_shouldHandleJsonString() {
String jsonStr = "{\"rectifyItemKey\":\"item-002\"}";
assertEquals("item-002", flow.getRectifyItemId(jsonStr));
}
@Test
void getRectifyItemId_shouldReturnNullWhenMissing() {
JSONObject json = new JSONObject();
assertNull(flow.getRectifyItemId(json));
}
@Test
void getRectifyItemId_shouldReturnNullWhenJsonDataNull() {
assertNull(flow.getRectifyItemId(null));
}
}
// ==================== 工具方法 ====================
@Nested
class UtilityMethods {
@Test
void getListSize_shouldCountCommaSeparated() {
assertEquals(3, flow.getListSize("a,b,c"));
assertEquals(1, flow.getListSize("single"));
assertEquals(0, flow.getListSize(""));
assertEquals(0, flow.getListSize(null));
}
@Test
void getListSize_shouldHandleSpaces() {
assertEquals(2, flow.getListSize(" a , b "));
}
@Test
void getListSize_shouldFilterEmptyElements() {
assertEquals(2, flow.getListSize("a,,b"));
}
}
}
@@ -0,0 +1,73 @@
package org.jeecg.inspectcloseout.listener;
import static org.mockito.Mockito.*;
import org.flowable.task.service.delegate.DelegateTask;
import org.jeecg.inspectcloseout.InspectCloseoutConfig;
import org.jeecg.inspectcloseout.InspectCloseoutConfig.InspectCloseoutProperties;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class)
class AfterCloseoutApprovedListenerTest {
@Mock
private InspectCloseoutConfig inspectCloseoutConfig;
@Mock
private DelegateTask delegateTask;
private AfterCloseoutApprovedListener listener;
private InspectCloseoutProperties props;
@BeforeEach
void setUp() {
props = new InspectCloseoutProperties();
props.setBusinessKey("businessKey");
when(inspectCloseoutConfig.getInspectCloseout()).thenReturn(props);
listener = new AfterCloseoutApprovedListener(inspectCloseoutConfig);
}
@Test
void shouldProcessWhenBusinessKeyExists() {
when(delegateTask.getVariable("businessKey")).thenReturn("biz-001");
listener.notify(delegateTask);
// 无异常即成功 — 当前实现仅记录日志
}
@Test
void shouldSkipWhenBusinessKeyIsNull() {
when(delegateTask.getVariable("businessKey")).thenReturn(null);
when(delegateTask.getId()).thenReturn("task-001");
listener.notify(delegateTask);
// 无异常即成功
}
@Test
void shouldSkipWhenBusinessKeyIsEmpty() {
when(delegateTask.getVariable("businessKey")).thenReturn("");
when(delegateTask.getId()).thenReturn("task-001");
listener.notify(delegateTask);
// 无异常即成功
}
@Test
void shouldSkipWhenBusinessKeyIsBlank() {
when(delegateTask.getVariable("businessKey")).thenReturn(" ");
when(delegateTask.getId()).thenReturn("task-001");
listener.notify(delegateTask);
// 无异常即成功
}
}