Closes #2184 - fix setting ownerLongName during claim

This commit is contained in:
Elena Mokeeva 2023-04-05 14:20:50 +02:00 committed by Elena Mokeeva
parent bc778d068d
commit f6937e1d25
2 changed files with 61 additions and 8 deletions

View File

@ -10,7 +10,11 @@ import static pro.taskana.testapi.DefaultTestEntities.defaultTestWorkbasket;
import java.time.Instant;
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
import pro.taskana.TaskanaConfiguration;
import pro.taskana.classification.api.ClassificationService;
import pro.taskana.classification.api.models.ClassificationSummary;
import pro.taskana.task.api.TaskService;
@ -18,11 +22,14 @@ import pro.taskana.task.api.TaskState;
import pro.taskana.task.api.exceptions.InvalidOwnerException;
import pro.taskana.task.api.models.ObjectReference;
import pro.taskana.task.api.models.Task;
import pro.taskana.testapi.TaskanaConfigurationModifier;
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.NotAuthorizedOnWorkbasketException;
@ -33,6 +40,7 @@ class ClaimTaskAccTest {
@TaskanaInject TaskService taskService;
@TaskanaInject ClassificationService classificationService;
@TaskanaInject WorkbasketService workbasketService;
@TaskanaInject UserService userService;
ClassificationSummary defaultClassificationSummary;
WorkbasketSummary defaultWorkbasketSummary;
@ -54,6 +62,13 @@ class ClaimTaskAccTest {
.buildAndStore(workbasketService);
defaultObjectReference = defaultTestObjectReference().build();
UserBuilder.newUser()
.id("user-1-2")
.firstName("Max")
.lastName("Mustermann")
.longName("Long name of user-1-2")
.buildAndStore(userService);
}
@WithAccessId(user = "user-1-2")
@ -394,4 +409,40 @@ class ClaimTaskAccTest {
assertThat(unclaimedTask.isRead()).isTrue();
assertThat(unclaimedTask.getOwner()).isNull();
}
@Nested
@TestInstance(Lifecycle.PER_CLASS)
class WithAdditionalUserInfoEnabled implements TaskanaConfigurationModifier {
@TaskanaInject TaskService taskService;
@Override
public TaskanaConfiguration.Builder modify(TaskanaConfiguration.Builder builder) {
return builder.addAdditionalUserInfo(true);
}
@WithAccessId(user = "user-1-2")
@Test
void should_SetOwnerLongName() throws Exception {
Task task =
TaskBuilder.newTask()
.classificationSummary(defaultClassificationSummary)
.workbasketSummary(defaultWorkbasketSummary)
.primaryObjRef(defaultObjectReference)
.buildAndStore(taskService);
Task claimedTask = taskService.claim(task.getId());
assertThat(claimedTask).isNotNull();
assertThat(claimedTask.getState()).isEqualTo(TaskState.CLAIMED);
assertThat(claimedTask.getClaimed()).isNotNull();
assertThat(claimedTask.getModified())
.isNotEqualTo(claimedTask.getCreated())
.isEqualTo(claimedTask.getClaimed());
assertThat(claimedTask.isRead()).isTrue();
assertThat(claimedTask.getOwner()).isEqualTo("user-1-2");
assertThat(claimedTask.getOwnerLongName()).isEqualTo("Long name of user-1-2");
}
}
}

View File

@ -1255,14 +1255,6 @@ public class TaskServiceImpl implements TaskService {
InvalidOwnerException,
NotAuthorizedOnWorkbasketException,
InvalidTaskStateException {
String userId = taskanaEngine.getEngine().getCurrentUserContext().getUserid();
String userLongName = null;
if (taskanaEngine.getEngine().getConfiguration().isAddAdditionalUserInfo()) {
User user = userMapper.findById(userId);
if (user != null) {
userLongName = user.getLongName();
}
}
TaskImpl task;
try {
taskanaEngine.openConnection();
@ -1272,6 +1264,16 @@ public class TaskServiceImpl implements TaskService {
Instant now = Instant.now();
checkPreconditionsForClaimTask(task, forceClaim);
String userId = taskanaEngine.getEngine().getCurrentUserContext().getUserid();
String userLongName = null;
if (taskanaEngine.getEngine().getConfiguration().isAddAdditionalUserInfo()) {
User user = userMapper.findById(userId);
if (user != null) {
userLongName = user.getLongName();
}
}
claimActionsOnTask(task, userId, userLongName, now);
taskMapper.update(task);
if (LOGGER.isDebugEnabled()) {