Search in sources :

Example 41 with User

use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.

the class TestUtil method mockUser.

public static User mockUser(String userId, List<TaskAssignment> taskAssignments) {
    User result = new User(userId, true);
    ChainElement previousElement = result;
    for (TaskAssignment taskAssignment : taskAssignments) {
        taskAssignment.setUser(result);
        taskAssignment.setPreviousElement(previousElement);
        previousElement.setNextElement(taskAssignment);
        previousElement = taskAssignment;
    }
    return result;
}
Also used : ChainElement(org.kie.kogito.taskassigning.core.model.ChainElement) User(org.kie.kogito.taskassigning.core.model.User) TaskAssignment(org.kie.kogito.taskassigning.core.model.TaskAssignment)

Example 42 with User

use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.

the class SolutionBuilderTest method assertThatUserHasTask.

private void assertThatUserHasTask(TaskAssigningSolution solution, String userId, int expectedTasks, int expectedTaskPosition, String expectedTask, int expectedStartTimeInMinutes, int expectedEndTimeInMinutes) {
    User user = solution.getUserList().stream().filter(u -> userId.equals(u.getId())).findFirst().orElse(null);
    assertThat(user).withFailMessage("User %s is not present in solution.", userId).isNotNull();
    assertThat(user.getNextElement()).withFailMessage("User %s must have %s task assignments", userId, expectedTasks).isNotNull();
    TaskAssignment nextElement = user.getNextElement();
    List<TaskAssignment> assignments = new ArrayList<>();
    while (nextElement != null) {
        assignments.add(nextElement);
        nextElement = nextElement.getNextElement();
    }
    assertThat(assignments.size()).withFailMessage("User %s must have %s task assignments, but have %s", userId, expectedTasks, assignments.size()).isEqualTo(expectedTasks);
    TaskAssignment taskAssignment = assignments.get(expectedTaskPosition);
    assertThat(taskAssignment.getId()).withFailMessage("User %s must have the task %s at the position %s", userId, expectedTask, expectedTaskPosition).isEqualTo(expectedTask);
    assertThat(taskAssignment.getStartTimeInMinutes()).withFailMessage("Task %s must start at time %s", expectedTask, expectedStartTimeInMinutes).isEqualTo(expectedStartTimeInMinutes);
    assertThat(taskAssignment.getEndTimeInMinutes()).withFailMessage("Task %s must finish at time %s", expectedTask, expectedEndTimeInMinutes).isEqualTo(expectedEndTimeInMinutes);
}
Also used : User(org.kie.kogito.taskassigning.core.model.User) TestUtil.mockExternalUser(org.kie.kogito.taskassigning.service.TestUtil.mockExternalUser) ArrayList(java.util.ArrayList) TaskAssignment(org.kie.kogito.taskassigning.core.model.TaskAssignment)

Example 43 with User

use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.

the class SolutionChangesBuilderTest method addUpdateUserChangeByAttribute.

@Test
void addUpdateUserChangeByAttribute() {
    Map<String, Object> userAttributes = new HashMap<>();
    userAttributes.put(ATTRIBUTE_1, ATTRIBUTE_1_VALUE);
    User user = mockUser(USER_1, Collections.singleton(new Group(GROUP_1)), userAttributes);
    Map<String, Object> externalUserAttributes = new HashMap<>();
    externalUserAttributes.put(ATTRIBUTE_1, ATTRIBUTE_1_VALUE_CHANGED);
    org.kie.kogito.taskassigning.user.service.User updatedExternalUser = mockExternalUser(USER_1, Collections.singleton(mockExternalGroup(GROUP_1)), externalUserAttributes);
    addUpdateUserChange(user, updatedExternalUser);
}
Also used : Group(org.kie.kogito.taskassigning.core.model.Group) User(org.kie.kogito.taskassigning.core.model.User) HashMap(java.util.HashMap) Test(org.junit.jupiter.api.Test)

Example 44 with User

use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.

the class SolutionChangesBuilderTest method addReservedTaskChangeForAnotherUserNotInExternalSystem.

@Test
void addReservedTaskChangeForAnotherUserNotInExternalSystem() {
    TaskAssignment user1Assignment = new TaskAssignment(mockTask(TASK_1_ID));
    User user1 = TestUtil.mockUser(USER_1, Collections.singletonList(user1Assignment));
    TaskAssigningSolution solution = mockSolution(Collections.singletonList(user1), Collections.singletonList(user1Assignment));
    TaskData taskData = mockTaskData(TASK_1_ID, RESERVED.value(), USER_2, TASK_1_LAST_UPDATE);
    addReservedTaskChangeForAnotherUser(solution, taskData, mockUser(USER_2));
    verify(userServiceConnector).findUser(USER_2);
    assertThatUserProcessorsWereNotApplied();
}
Also used : User(org.kie.kogito.taskassigning.core.model.User) TaskAssigningSolution(org.kie.kogito.taskassigning.core.model.TaskAssigningSolution) TaskAssignment(org.kie.kogito.taskassigning.core.model.TaskAssignment) TaskUtil.fromTaskData(org.kie.kogito.taskassigning.service.util.TaskUtil.fromTaskData) TestUtil.mockTaskData(org.kie.kogito.taskassigning.service.TestUtil.mockTaskData) Test(org.junit.jupiter.api.Test)

Example 45 with User

use of org.kie.kogito.taskassigning.core.model.User in project kogito-apps by kiegroup.

the class SolutionChangesBuilderTest method addRemoveTaskInTerminalStatus.

void addRemoveTaskInTerminalStatus(TaskState terminalState) {
    TaskAssignment user1Assignment = new TaskAssignment(mockTask(TASK_1_ID));
    User user1 = TestUtil.mockUser(USER_1, Collections.singletonList(user1Assignment));
    TaskAssigningSolution solution = mockSolution(Collections.singletonList(user1), Collections.singletonList(user1Assignment));
    TaskData taskData = mockTaskData(TASK_1_ID, terminalState.value(), TASK_1_LAST_UPDATE);
    List<ProblemFactChange<TaskAssigningSolution>> result = SolutionChangesBuilder.create().withContext(context).withUserServiceConnector(userServiceConnector).withProcessors(processorRegistry).fromTasksData(mockTaskDataList(taskData)).forSolution(solution).build();
    assertChangeIsTheChangeSetId(result, 0);
    assertChange(result, 1, new RemoveTaskProblemFactChange(new TaskAssignment(fromTaskData(taskData))));
    assertThatTaskProcessorsWhereNotApplied();
    assertThatUserProcessorsWereNotApplied();
}
Also used : RemoveTaskProblemFactChange(org.kie.kogito.taskassigning.core.model.solver.realtime.RemoveTaskProblemFactChange) User(org.kie.kogito.taskassigning.core.model.User) TaskAssigningSolution(org.kie.kogito.taskassigning.core.model.TaskAssigningSolution) RemoveUserProblemFactChange(org.kie.kogito.taskassigning.core.model.solver.realtime.RemoveUserProblemFactChange) ProblemFactChange(org.optaplanner.core.api.solver.ProblemFactChange) AssignTaskProblemFactChange(org.kie.kogito.taskassigning.core.model.solver.realtime.AssignTaskProblemFactChange) DisableUserProblemFactChange(org.kie.kogito.taskassigning.core.model.solver.realtime.DisableUserProblemFactChange) UserPropertyChangeProblemFactChange(org.kie.kogito.taskassigning.core.model.solver.realtime.UserPropertyChangeProblemFactChange) AddUserProblemFactChange(org.kie.kogito.taskassigning.core.model.solver.realtime.AddUserProblemFactChange) RemoveTaskProblemFactChange(org.kie.kogito.taskassigning.core.model.solver.realtime.RemoveTaskProblemFactChange) AddTaskProblemFactChange(org.kie.kogito.taskassigning.core.model.solver.realtime.AddTaskProblemFactChange) ReleaseTaskProblemFactChange(org.kie.kogito.taskassigning.core.model.solver.realtime.ReleaseTaskProblemFactChange) TaskAssignment(org.kie.kogito.taskassigning.core.model.TaskAssignment) TaskUtil.fromTaskData(org.kie.kogito.taskassigning.service.util.TaskUtil.fromTaskData) TestUtil.mockTaskData(org.kie.kogito.taskassigning.service.TestUtil.mockTaskData)

Aggregations

User (org.kie.kogito.taskassigning.core.model.User)70 TaskAssignment (org.kie.kogito.taskassigning.core.model.TaskAssignment)41 Test (org.junit.jupiter.api.Test)32 TaskAssigningSolution (org.kie.kogito.taskassigning.core.model.TaskAssigningSolution)25 TestUtil.mockUser (org.kie.kogito.taskassigning.core.model.TestUtil.mockUser)14 Task (org.kie.kogito.taskassigning.core.model.Task)12 ArrayList (java.util.ArrayList)11 TestUtil.mockTaskAssignment (org.kie.kogito.taskassigning.core.model.TestUtil.mockTaskAssignment)11 AssignTaskProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.AssignTaskProblemFactChange)11 TaskUtil.fromTaskData (org.kie.kogito.taskassigning.service.util.TaskUtil.fromTaskData)10 Group (org.kie.kogito.taskassigning.core.model.Group)9 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)8 AddTaskProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.AddTaskProblemFactChange)8 ReleaseTaskProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.ReleaseTaskProblemFactChange)8 RemoveTaskProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.RemoveTaskProblemFactChange)8 ProblemFactChange (org.optaplanner.core.api.solver.ProblemFactChange)8 HashMap (java.util.HashMap)7 AddUserProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.AddUserProblemFactChange)7 DisableUserProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.DisableUserProblemFactChange)7 RemoveUserProblemFactChange (org.kie.kogito.taskassigning.core.model.solver.realtime.RemoveUserProblemFactChange)7