use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class TaskAssignmentByGroupAndSkillsChangeMoveFilterTest method mockChangeMove.
@SuppressWarnings("unchecked")
private static ChangeMove<TaskAssigningSolution> mockChangeMove(Task task, User user) {
ChangeMove<TaskAssigningSolution> changeMove = mock(ChangeMove.class);
TaskAssignment element = mock(TaskAssignment.class);
when(element.isTaskAssignment()).thenReturn(true);
when(element.getTask()).thenReturn(task);
when(element.getUser()).thenReturn(user);
when(changeMove.getToPlanningValue()).thenReturn(element);
when(changeMove.getEntity()).thenReturn(element);
return changeMove;
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class AddTaskExecutableProblemFactChangeTest method addTaskProblemFactChange.
private void addTaskProblemFactChange(TaskAssigningSolution solution, List<String> taskIds) {
solution.getUserList().add(PLANNING_USER);
List<ProgrammedProblemFactChange<AddTaskProblemFactChange>> programmedChanges = taskIds.stream().map(id -> new ProgrammedProblemFactChange<>(new AddTaskProblemFactChange(new TaskAssignment(Task.newBuilder().id(id).name("NewTask_" + id).build())))).collect(Collectors.toList());
// each partial solution must have the change that was applied on it.
executeSequentialChanges(solution, programmedChanges);
programmedChanges.forEach(change -> assertAddTaskProblemFactChangeWasProduced(change.getChange(), change.getSolutionAfterChange()));
// finally the last solution must have the result of all the changes.
TaskAssigningSolution lastSolution = programmedChanges.get(programmedChanges.size() - 1).getSolutionAfterChange();
programmedChanges.forEach(change -> assertAddTaskProblemFactChangeWasProduced(change.getChange(), lastSolution));
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class AddTaskExecutableProblemFactChangeTest method addTaskProblemFactChangeTaskAlreadyExists.
@Test
void addTaskProblemFactChangeTaskAlreadyExists() {
TaskAssigningSolution solution = readTaskAssigningSolution(SET_OF_24TASKS_8USERS_SOLUTION.resource());
// randomly selected task.
String taskId = "20";
TaskAssignment taskAssignment = new TaskAssignment(Task.newBuilder().id(taskId).build());
Assertions.assertThatThrownBy(() -> executeSequentialChanges(solution, Collections.singletonList(new ProgrammedProblemFactChange<>(new AddTaskProblemFactChange(taskAssignment))))).hasMessage("A task assignment with the given identifier id: %s already exists", taskId);
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class AssignTaskExecutableProblemFactChangeTest method assignTaskProblemFactChangeUserNotFound.
@Test
void assignTaskProblemFactChangeUserNotFound() {
TaskAssigningSolution solution = readTaskAssigningSolution(SET_OF_24TASKS_8USERS_SOLUTION.resource());
TaskAssignment taskAssignment = solution.getTaskAssignmentList().get(0);
User user = new User("Non Existing");
Assertions.assertThatThrownBy(() -> executeSequentialChanges(solution, Collections.singletonList(new ProgrammedAssignTaskProblemFactChange(taskAssignment, user)))).hasMessage("Expected user: %s was not found in current working solution", user);
}
use of org.kie.kogito.taskassigning.core.model.TaskAssigningSolution in project kogito-apps by kiegroup.
the class AssignTaskExecutableProblemFactChangeTest method assignTaskProblemFactChangeRandomChangeSet.
private void assignTaskProblemFactChangeRandomChangeSet(String solutionResource) throws Exception {
TaskAssigningSolution solution = readTaskAssigningSolution(solutionResource);
solution.getUserList().add(PLANNING_USER);
int taskCount = solution.getTaskAssignmentList().size();
int userCount = solution.getUserList().size();
int randomChanges = taskCount / 2 + random.nextInt(taskCount / 2);
// prepare the list of changes to program
List<ProgrammedAssignTaskProblemFactChange> programmedChanges = new ArrayList<>();
TaskAssignment randomTask;
User randomUser;
for (int i = 0; i < randomChanges; i++) {
randomTask = solution.getTaskAssignmentList().get(random.nextInt(taskCount));
randomUser = solution.getUserList().get(random.nextInt(userCount));
programmedChanges.add(new ProgrammedAssignTaskProblemFactChange(randomTask, randomUser));
}
assignTaskProblemFactChange(solution, solutionResource, RANDOM_TEST, programmedChanges);
}
Aggregations