package com.sinata.appointment.service;
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.Mockito.when;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.sinata.appointment.constants.ApprovalNodeCode;
|
import com.sinata.appointment.constants.ApprovalTaskStatus;
|
import com.sinata.appointment.dto.ApprovalFlowNodeVo;
|
import com.sinata.appointment.entity.AppointmentOrder;
|
import com.sinata.appointment.entity.ApprovalInstance;
|
import com.sinata.appointment.entity.ApprovalTask;
|
import com.sinata.appointment.entity.BizApprovalNodeConfig;
|
import com.sinata.appointment.entity.MpUser;
|
import com.sinata.appointment.mapper.AppointmentOrderMapper;
|
import com.sinata.appointment.mapper.ApprovalInstanceMapper;
|
import com.sinata.appointment.mapper.ApprovalTaskMapper;
|
import com.sinata.appointment.mapper.BizApprovalNodeConfigMapper;
|
import com.sinata.appointment.mapper.MpPassLocalUnitMapper;
|
import com.sinata.appointment.mapper.MpStaffGroupMapper;
|
import com.sinata.appointment.mapper.MpUserMapper;
|
import com.sinata.appointment.mapper.SysDeptMapper;
|
import java.util.List;
|
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 ApprovalFlowViewApplicationServiceTest {
|
|
@Mock
|
private ApprovalInstanceMapper approvalInstanceMapper;
|
@Mock
|
private ApprovalTaskMapper approvalTaskMapper;
|
@Mock
|
private BizApprovalNodeConfigMapper bizApprovalNodeConfigMapper;
|
@Mock
|
private AppointmentOrderMapper appointmentOrderMapper;
|
@Mock
|
private MpUserMapper mpUserMapper;
|
@Mock
|
private SysDeptMapper sysDeptMapper;
|
@Mock
|
private MpStaffGroupMapper mpStaffGroupMapper;
|
@Mock
|
private MpPassLocalUnitMapper mpPassLocalUnitMapper;
|
|
@Test
|
void treeByOrderIdShouldDisplaySelectedLocalUnitNameForUnitGroup() {
|
ApprovalFlowViewApplicationService service =
|
new ApprovalFlowViewApplicationService(
|
approvalInstanceMapper,
|
approvalTaskMapper,
|
bizApprovalNodeConfigMapper,
|
appointmentOrderMapper,
|
mpUserMapper,
|
sysDeptMapper,
|
mpStaffGroupMapper,
|
mpPassLocalUnitMapper,
|
new ObjectMapper());
|
|
ApprovalInstance instance = new ApprovalInstance();
|
instance.setId(1L);
|
instance.setOrderId(10L);
|
|
AppointmentOrder order = new AppointmentOrder();
|
order.setId(10L);
|
order.setPassLocalUnitIds("[11]");
|
order.setPassLocalUnitNames("[\"东区属地\"]");
|
|
ApprovalTask task1 = new ApprovalTask();
|
task1.setId(101L);
|
task1.setInstanceId(1L);
|
task1.setNodeCode(ApprovalNodeCode.LEVEL3_LOCAL_DEPT_LEADER);
|
task1.setGroupKey(ApprovalNodeCode.LEVEL3_LOCAL_DEPT_LEADER + ":UNIT:11");
|
task1.setAssigneeUserId(1001L);
|
task1.setTaskStatus(ApprovalTaskStatus.PENDING);
|
|
ApprovalTask task2 = new ApprovalTask();
|
task2.setId(102L);
|
task2.setInstanceId(1L);
|
task2.setNodeCode(ApprovalNodeCode.LEVEL3_LOCAL_DEPT_LEADER);
|
task2.setGroupKey(ApprovalNodeCode.LEVEL3_LOCAL_DEPT_LEADER + ":UNIT:11");
|
task2.setAssigneeUserId(1002L);
|
task2.setTaskStatus(ApprovalTaskStatus.PENDING);
|
|
BizApprovalNodeConfig nodeConfig = new BizApprovalNodeConfig();
|
nodeConfig.setNodeCode(ApprovalNodeCode.LEVEL3_LOCAL_DEPT_LEADER);
|
nodeConfig.setNodeName("属地管理部门领导(三级)");
|
|
MpUser user1 = new MpUser();
|
user1.setId(1001L);
|
user1.setNickName("张三");
|
MpUser user2 = new MpUser();
|
user2.setId(1002L);
|
user2.setNickName("李四");
|
|
when(approvalInstanceMapper.selectList(any())).thenReturn(List.of(instance));
|
when(appointmentOrderMapper.selectById(10L)).thenReturn(order);
|
when(approvalTaskMapper.selectList(any())).thenReturn(List.of(task1, task2));
|
when(bizApprovalNodeConfigMapper.selectList(any())).thenReturn(List.of(nodeConfig));
|
when(mpUserMapper.selectList(any())).thenReturn(List.of(user1, user2));
|
|
List<ApprovalFlowNodeVo> result = service.treeByOrderId(10L);
|
|
assertEquals(1, result.size());
|
assertEquals(1, result.get(0).getGroups().size());
|
assertEquals("TEMP_GROUP", result.get(0).getGroups().get(0).getGroupType());
|
assertEquals("东区属地", result.get(0).getGroups().get(0).getGroupName());
|
assertEquals(2, result.get(0).getGroups().get(0).getUsers().size());
|
}
|
}
|