TSK-1977: fix setting ownerLongName while claiming

This commit is contained in:
Elena Mokeeva 2023-01-12 14:37:13 +01:00 committed by Elena Mokeeva
parent 291cc38ea6
commit 8bfb7fae95
2 changed files with 37 additions and 3 deletions

View File

@ -19,6 +19,7 @@ import org.junit.jupiter.api.TestTemplate;
import pro.taskana.classification.api.ClassificationService;
import pro.taskana.classification.api.models.ClassificationSummary;
import pro.taskana.common.api.BulkOperationResults;
import pro.taskana.common.api.TaskanaEngine;
import pro.taskana.common.api.exceptions.InvalidArgumentException;
import pro.taskana.common.api.exceptions.TaskanaException;
import pro.taskana.common.api.security.CurrentUserContext;
@ -35,8 +36,10 @@ import pro.taskana.testapi.DefaultTestEntities;
import pro.taskana.testapi.TaskanaInject;
import pro.taskana.testapi.TaskanaIntegrationTest;
import pro.taskana.testapi.builder.TaskBuilder;
import pro.taskana.testapi.builder.UserBuilder;
import pro.taskana.testapi.builder.WorkbasketAccessItemBuilder;
import pro.taskana.testapi.security.WithAccessId;
import pro.taskana.user.api.UserService;
import pro.taskana.workbasket.api.WorkbasketPermission;
import pro.taskana.workbasket.api.WorkbasketService;
import pro.taskana.workbasket.api.exceptions.MismatchedWorkbasketPermissionException;
@ -48,6 +51,10 @@ class CompleteTaskAccTest {
@TaskanaInject TaskService taskService;
@TaskanaInject CurrentUserContext currentUserContext;
@TaskanaInject UserService userService;
@TaskanaInject TaskanaEngine taskanaEngine;
ClassificationSummary defaultClassificationSummary;
WorkbasketSummary defaultWorkbasketSummary;
ObjectReference defaultObjectReference;
@ -68,6 +75,11 @@ class CompleteTaskAccTest {
.buildAndStore(workbasketService);
defaultObjectReference = DefaultTestEntities.defaultTestObjectReference().build();
taskanaEngine.getConfiguration().setAddAdditionalUserInfo(true);
UserBuilder user11 = UserBuilder.newUser().id("user-1-1")
.longName("Mustermann, Max - (user-1-1)").firstName("Max").lastName("Mustermann");
user11.buildAndStore(userService);
}
@WithAccessId(user = "user-1-1")
@ -246,6 +258,7 @@ class CompleteTaskAccTest {
assertThat(claimedTask).isNotNull();
assertThat(claimedTask.getOwner()).isEqualTo("user-1-1");
assertThat(claimedTask.getOwnerLongName()).isEqualTo("Mustermann, Max - (user-1-1)");
assertThat(claimedTask.getState()).isEqualTo(TaskState.CLAIMED);
assertThat(claimedTask.isRead()).isTrue();
assertThat(claimedTask.getClaimed())
@ -266,6 +279,7 @@ class CompleteTaskAccTest {
assertThat(claimedTask).isNotNull();
assertThat(claimedTask.getOwner()).isEqualTo("user-1-1");
assertThat(claimedTask.getOwnerLongName()).isEqualTo("Mustermann, Max - (user-1-1)");
assertThat(claimedTask.getState()).isEqualTo(TaskState.CLAIMED);
assertThat(claimedTask.isRead()).isTrue();
assertThat(claimedTask.getClaimed())

View File

@ -1110,13 +1110,24 @@ public class TaskServiceImpl implements TaskService {
addErrorToBulkLog(this::checkPreconditionsForCompleteTask, bulkLog));
} else {
String userId = taskanaEngine.getEngine().getCurrentUserContext().getUserid();
String userLongName;
if (taskanaEngine.getEngine().getConfiguration().getAddAdditionalUserInfo()) {
User user = userMapper.findById(userId);
if (user != null) {
userLongName = user.getLongName();
} else {
userLongName = null;
}
} else {
userLongName = null;
}
filteredSummaries =
filteredSummaries.filter(
addErrorToBulkLog(
summary -> {
if (taskIsNotClaimed(summary)) {
checkPreconditionsForClaimTask(summary, true);
claimActionsOnTask(summary, userId, now);
claimActionsOnTask(summary, userId, userLongName, now);
}
},
bulkLog));
@ -1208,6 +1219,13 @@ public class TaskServiceImpl implements TaskService {
throws TaskNotFoundException, InvalidStateException, InvalidOwnerException,
NotAuthorizedException {
String userId = taskanaEngine.getEngine().getCurrentUserContext().getUserid();
String userLongName = null;
if (taskanaEngine.getEngine().getConfiguration().getAddAdditionalUserInfo()) {
User user = userMapper.findById(userId);
if (user != null) {
userLongName = user.getLongName();
}
}
TaskImpl task;
try {
taskanaEngine.openConnection();
@ -1217,7 +1235,7 @@ public class TaskServiceImpl implements TaskService {
Instant now = Instant.now();
checkPreconditionsForClaimTask(task, forceClaim);
claimActionsOnTask(task, userId, now);
claimActionsOnTask(task, userId, userLongName, now);
taskMapper.update(task);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug("Task '{}' claimed by user '{}'.", taskId, userId);
@ -1339,8 +1357,10 @@ public class TaskServiceImpl implements TaskService {
return task;
}
private static void claimActionsOnTask(TaskSummaryImpl task, String userId, Instant now) {
private static void claimActionsOnTask(
TaskSummaryImpl task, String userId, String userLongName, Instant now) {
task.setOwner(userId);
task.setOwnerLongName(userLongName);
task.setModified(now);
task.setClaimed(now);
task.setRead(true);