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;
}
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);
}
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);
}
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();
}
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();
}
Aggregations