| | |
| | | |
| | | import static org.junit.jupiter.api.Assertions.assertEquals; |
| | | import static org.mockito.ArgumentMatchers.any; |
| | | import static org.mockito.Mockito.times; |
| | | import static org.mockito.Mockito.verify; |
| | | import static org.mockito.Mockito.when; |
| | | |
| | | import com.sinata.appointment.constants.ApprovalNodeCode; |
| | | import com.sinata.appointment.constants.ApprovalInstanceStatus; |
| | | import com.sinata.appointment.constants.ApprovalTaskStatus; |
| | | import com.sinata.appointment.constants.LocalUnitApproverType; |
| | | import com.sinata.appointment.entity.AppointmentOrder; |
| | | import com.sinata.appointment.entity.MpPassLocalUnit; |
| | | import com.sinata.appointment.entity.MpUser; |
| | | import com.sinata.appointment.entity.ApprovalInstance; |
| | | import com.sinata.appointment.entity.ApprovalTask; |
| | | import com.sinata.appointment.mapper.ApprovalInstanceMapper; |
| | |
| | | import org.mockito.ArgumentCaptor; |
| | | import org.mockito.Mock; |
| | | import org.mockito.junit.jupiter.MockitoExtension; |
| | | import org.springframework.test.util.ReflectionTestUtils; |
| | | |
| | | @ExtendWith(MockitoExtension.class) |
| | | class ApprovalEngineServiceTest { |
| | |
| | | assertEquals(ApprovalTaskStatus.CANCELLED, updatedTasks.get(1).getTaskStatus()); |
| | | assertEquals("预约人取消", updatedTasks.get(1).getComment()); |
| | | } |
| | | |
| | | @Test |
| | | void createTasksForLocalUnitNodeStrictShouldMergeDeptApproversIntoOneUnitGroup() { |
| | | ApprovalEngineService approvalEngineService = |
| | | new ApprovalEngineService( |
| | | bizApprovalNodeConfigMapper, |
| | | approvalInstanceMapper, |
| | | approvalTaskMapper, |
| | | mpUserMapper, |
| | | mpPassLocalUnitMapper, |
| | | mpPassLocalUnitMemberMapper, |
| | | mpStaffGroupMemberMapper, |
| | | sysBizSettingCacheService, |
| | | new ObjectMapper()); |
| | | |
| | | AppointmentOrder order = new AppointmentOrder(); |
| | | order.setInvolveOtherLocalUnit(true); |
| | | order.setPassLocalUnitIds("[11]"); |
| | | |
| | | MpPassLocalUnit unit = new MpPassLocalUnit(); |
| | | unit.setId(11L); |
| | | unit.setApproverType(LocalUnitApproverType.DEPT); |
| | | unit.setApproverDeptIds("[100,101]"); |
| | | |
| | | MpUser deptUser1 = new MpUser(); |
| | | deptUser1.setId(1L); |
| | | MpUser deptUser2 = new MpUser(); |
| | | deptUser2.setId(2L); |
| | | MpUser deptUser3 = new MpUser(); |
| | | deptUser3.setId(3L); |
| | | |
| | | when(mpPassLocalUnitMapper.selectList(any())).thenReturn(List.of(unit)); |
| | | when(mpUserMapper.selectList(any())) |
| | | .thenReturn(List.of(deptUser1, deptUser2), List.of(deptUser2, deptUser3)); |
| | | |
| | | int created = |
| | | (int) |
| | | ReflectionTestUtils.invokeMethod( |
| | | approvalEngineService, |
| | | "createTasksForLocalUnitNodeStrict", |
| | | 99L, |
| | | order, |
| | | ApprovalTaskStatus.PENDING); |
| | | |
| | | assertEquals(3, created); |
| | | |
| | | ArgumentCaptor<ApprovalTask> taskCaptor = ArgumentCaptor.forClass(ApprovalTask.class); |
| | | verify(approvalTaskMapper, times(3)).insert(taskCaptor.capture()); |
| | | List<ApprovalTask> insertedTasks = taskCaptor.getAllValues(); |
| | | assertEquals( |
| | | List.of(1L, 2L, 3L), |
| | | insertedTasks.stream().map(ApprovalTask::getAssigneeUserId).toList()); |
| | | assertEquals( |
| | | List.of( |
| | | ApprovalNodeCode.LEVEL3_LOCAL_DEPT_LEADER + ":UNIT:11", |
| | | ApprovalNodeCode.LEVEL3_LOCAL_DEPT_LEADER + ":UNIT:11", |
| | | ApprovalNodeCode.LEVEL3_LOCAL_DEPT_LEADER + ":UNIT:11"), |
| | | insertedTasks.stream().map(ApprovalTask::getGroupKey).toList()); |
| | | } |
| | | } |