TSK-1413: Fix bulk transfer task history event creation

This commit is contained in:
Joerg Heffner 2020-10-15 09:01:50 +02:00 committed by gitgoodjhe
parent 4dccdb8351
commit 654dc6b2cb
3 changed files with 72 additions and 23 deletions

View File

@ -3,6 +3,7 @@ package acceptance.events.task;
import static org.assertj.core.api.Assertions.assertThat;
import acceptance.AbstractAccTest;
import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@ -48,4 +49,52 @@ class CreateHistoryEventOnTaskTransferAccTest extends AbstractAccTest {
assertThat(eventType).isEqualTo(TaskHistoryEventType.TRANSFERRED.getName());
}
@WithAccessId(user = "admin")
@Test
void should_CreateTransferredHistoryEvents_When_TaskBulkTransfer() throws Exception {
final String taskId = "TKI:000000000000000000000000000000000004";
final String taskId2 = "TKI:000000000000000000000000000000000002";
final String destinationWorkbasketKey = "WBI:100000000000000000000000000000000007";
List<String> taskIds = new ArrayList<>();
taskIds.add(taskId);
taskIds.add(taskId2);
TaskHistoryQueryMapper taskHistoryQueryMapper = getHistoryQueryMapper();
List<TaskHistoryEvent> events =
taskHistoryQueryMapper.queryHistoryEvents(
(TaskHistoryQueryImpl)
historyService.createTaskHistoryQuery().taskIdIn(taskIds.toArray(new String[0])));
assertThat(events).isEmpty();
taskService.transferTasks(destinationWorkbasketKey, taskIds);
events =
taskHistoryQueryMapper.queryHistoryEvents(
(TaskHistoryQueryImpl)
historyService
.createTaskHistoryQuery()
.taskIdIn(taskIds.stream().toArray(String[]::new)));
assertThat(events).hasSize(2);
assertThat(events)
.extracting(TaskHistoryEvent::getEventType)
.containsOnly(TaskHistoryEventType.TRANSFERRED.getName());
assertThat(events)
.extracting(TaskHistoryEvent::getOldValue)
.containsExactlyInAnyOrder(
"WBI:100000000000000000000000000000000006", "WBI:100000000000000000000000000000000001");
assertThat(events)
.extracting(TaskHistoryEvent::getNewValue)
.containsOnly("WBI:100000000000000000000000000000000007");
}
}

View File

@ -1,21 +1,16 @@
package pro.taskana.spi.history.api.events.task;
import pro.taskana.task.api.models.Task;
import pro.taskana.workbasket.api.models.WorkbasketSummary;
/** Event fired if a task is transferred. */
public class TaskTransferredEvent extends TaskHistoryEvent {
public TaskTransferredEvent(
String id,
Task task,
WorkbasketSummary oldWorkbasket,
WorkbasketSummary newWorkbasket,
String userId) {
String id, Task task, String oldWorkbasketId, String newWorkbasketId, String userId) {
super(id, task, userId, null);
eventType = TaskHistoryEventType.TRANSFERRED.getName();
created = task.getModified();
this.oldValue = oldWorkbasket.getId();
this.newValue = newWorkbasket.getId();
this.oldValue = oldWorkbasketId;
this.newValue = newWorkbasketId;
}
}

View File

@ -110,7 +110,8 @@ class TaskTransferrer {
taskId,
destinationWorkbasket.getId());
if (HistoryEventManager.isHistoryEnabled()) {
createTaskTransferredEvent(task, oldWorkbasketSummary, destinationWorkbasket.asSummary());
createTaskTransferredEvent(
task, oldWorkbasketSummary.getId(), destinationWorkbasket.asSummary().getId());
}
return task;
} finally {
@ -167,7 +168,8 @@ class TaskTransferrer {
taskId,
destinationWorkbasketId);
if (HistoryEventManager.isHistoryEnabled()) {
createTaskTransferredEvent(task, oldWorkbasketSummary, destinationWorkbasket.asSummary());
createTaskTransferredEvent(
task, oldWorkbasketSummary.getId(), destinationWorkbasketId);
}
return task;
} finally {
@ -358,13 +360,13 @@ class TaskTransferrer {
}
private void createTaskTransferredEvent(
Task task, WorkbasketSummary oldWorkbasketSummary, WorkbasketSummary newWorkbasketSummary) {
Task task, String oldWorkbasketId, String newWorkbasketId) {
historyEventManager.createEvent(
new TaskTransferredEvent(
IdGenerator.generateWithPrefix(IdGenerator.ID_PREFIX_TASK_HISTORY_EVENT),
task,
oldWorkbasketSummary,
newWorkbasketSummary,
oldWorkbasketId,
newWorkbasketId,
taskanaEngine.getEngine().getCurrentUserContext().getUserid()));
}
@ -408,17 +410,20 @@ class TaskTransferrer {
taskSummaries
.forEach(
task -> {
TaskImpl newTask = (TaskImpl) taskService.newTask(task.getWorkbasketId());
newTask.setWorkbasketSummary(updateObject.getWorkbasketSummary());
newTask.setRead(updateObject.isRead());
newTask.setTransferred(updateObject.isTransferred());
newTask.setWorkbasketSummary(updateObject.getWorkbasketSummary());
newTask.setDomain(updateObject.getDomain());
newTask.setModified(updateObject.getModified());
newTask.setState(updateObject.getState());
newTask.setOwner(updateObject.getOwner());
TaskImpl transferredTask = (TaskImpl) taskService.newTask(task.getWorkbasketId());
transferredTask.setId(task.getTaskId());
transferredTask.setRead(updateObject.isRead());
transferredTask.setTransferred(updateObject.isTransferred());
transferredTask.setWorkbasketSummary(updateObject.getWorkbasketSummary());
transferredTask.setDomain(updateObject.getDomain());
transferredTask.setModified(updateObject.getModified());
transferredTask.setState(updateObject.getState());
transferredTask.setOwner(updateObject.getOwner());
createTaskTransferredEvent(
newTask, newTask.getWorkbasketSummary(), updateObject.getWorkbasketSummary());
transferredTask,
task.getWorkbasketId(),
updateObject.getWorkbasketSummary().getId());
});
}
}