package cn.iocoder.yudao.module.bpm.framework.flowable.core.candidate.strategy.dept; import cn.hutool.core.map.MapUtil; import cn.iocoder.yudao.framework.test.core.ut.BaseMockitoUnitTest; import cn.iocoder.yudao.module.bpm.framework.flowable.core.enums.BpmnVariableConstants; import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; import org.assertj.core.util.Sets; import org.flowable.engine.delegate.DelegateExecution; import org.flowable.engine.runtime.ProcessInstance; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class BpmTaskCandidateStartUserSelectStrategyTest extends BaseMockitoUnitTest { @InjectMocks private BpmTaskCandidateStartUserSelectStrategy strategy; @Mock private BpmProcessInstanceService processInstanceService; @Test public void testCalculateUsersByTask() { // 准备参数 String param = "2"; // mock 方法(获得流程发起人) ProcessInstance processInstance = mock(ProcessInstance.class); DelegateExecution execution = mock(DelegateExecution.class); when(processInstanceService.getProcessInstance(eq(execution.getProcessInstanceId()))).thenReturn(processInstance); when(execution.getCurrentActivityId()).thenReturn("activity_001"); // mock 方法(FlowableUtils) Map processVariables = new HashMap<>(); processVariables.put(BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_START_USER_SELECT_ASSIGNEES, MapUtil.of("activity_001", List.of(1L, 2L))); when(processInstance.getProcessVariables()).thenReturn(processVariables); // 调用 Set userIds = strategy.calculateUsersByTask(execution, param); // 断言 assertEquals(Sets.newLinkedHashSet(1L, 2L), userIds); } @Test public void testCalculateUsersByActivity() { // 准备参数 String activityId = "activity_001"; Map processVariables = new HashMap<>(); processVariables.put(BpmnVariableConstants.PROCESS_INSTANCE_VARIABLE_START_USER_SELECT_ASSIGNEES, MapUtil.of("activity_001", List.of(1L, 2L))); // 调用 Set userIds = strategy.calculateUsersByActivity(null, activityId, null, null, null, processVariables); // 断言 assertEquals(Sets.newLinkedHashSet(1L, 2L), userIds); } }