TSK-1844: Refactor CreateTaskCommentAccTest to use test-api

This commit is contained in:
ryzheboka 2022-04-11 15:31:06 +02:00 committed by Elena Mokeeva
parent 2daf98977f
commit 387a95c4ce
2 changed files with 141 additions and 61 deletions

View File

@ -0,0 +1,141 @@
package acceptance.taskcomment.create;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.catchThrowableOfType;
import java.time.Instant;
import java.util.List;
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import pro.taskana.classification.api.ClassificationService;
import pro.taskana.classification.api.models.Classification;
import pro.taskana.task.api.TaskService;
import pro.taskana.task.api.exceptions.TaskNotFoundException;
import pro.taskana.task.api.models.Task;
import pro.taskana.task.api.models.TaskComment;
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.TaskCommentBuilder;
import pro.taskana.testapi.builder.WorkbasketAccessItemBuilder;
import pro.taskana.testapi.security.WithAccessId;
import pro.taskana.workbasket.api.WorkbasketPermission;
import pro.taskana.workbasket.api.WorkbasketService;
import pro.taskana.workbasket.api.exceptions.MismatchedWorkbasketPermissionException;
import pro.taskana.workbasket.api.models.Workbasket;
@TaskanaIntegrationTest
class CreateTaskCommentAccTest {
@TaskanaInject TaskService taskService;
@TaskanaInject ClassificationService classificationService;
@TaskanaInject WorkbasketService workbasketService;
Classification defaultClassification;
Workbasket defaultWorkbasket;
Task taskWithComments;
TaskComment comment1;
TaskComment comment2;
@WithAccessId(user = "admin")
@BeforeAll
void setup() throws Exception {
defaultClassification =
DefaultTestEntities.defaultTestClassification().buildAndStore(classificationService);
defaultWorkbasket =
DefaultTestEntities.defaultTestWorkbasket().buildAndStore(workbasketService);
WorkbasketAccessItemBuilder.newWorkbasketAccessItem()
.workbasketId(defaultWorkbasket.getId())
.accessId("user-1-1")
.permission(WorkbasketPermission.OPEN)
.permission(WorkbasketPermission.READ)
.permission(WorkbasketPermission.APPEND)
.buildAndStore(workbasketService);
taskWithComments =
TaskBuilder.newTask()
.classificationSummary(defaultClassification.asSummary())
.workbasketSummary(defaultWorkbasket.asSummary())
.primaryObjRef(DefaultTestEntities.defaultTestObjectReference().build())
.buildAndStore(taskService);
comment1 =
TaskCommentBuilder.newTaskComment()
.taskId(taskWithComments.getId())
.textField("Text1")
.created(Instant.now())
.modified(Instant.now())
.buildAndStore(taskService);
comment2 =
TaskCommentBuilder.newTaskComment()
.taskId(taskWithComments.getId())
.textField("Text1")
.created(Instant.now())
.modified(Instant.now())
.buildAndStore(taskService);
}
@WithAccessId(user = "user-1-1")
@Test
void should_CreateTaskComment_For_TaskThatAlreadyHasComments() throws Exception {
TaskComment taskCommentToCreate = taskService.newTaskComment(taskWithComments.getId());
taskCommentToCreate.setTextField("Some text");
taskService.createTaskComment(taskCommentToCreate);
List<TaskComment> taskCommentsAfterInsert =
taskService.getTaskComments(taskWithComments.getId());
assertThat(taskCommentsAfterInsert)
.containsExactlyInAnyOrder(comment1, comment2, taskCommentToCreate);
// Deleting the comment so that the comments remain the same in different tests inside this
// class
taskService.deleteTaskComment(taskCommentToCreate.getId());
}
@WithAccessId(user = "user-1-2")
@Test
void should_FailToCreateTaskComment_When_UserHasNoWorkbasketPermission() {
TaskComment taskCommentToCreate = taskService.newTaskComment(taskWithComments.getId());
taskCommentToCreate.setTextField("Some text");
ThrowingCallable call = () -> taskService.createTaskComment(taskCommentToCreate);
MismatchedWorkbasketPermissionException e =
catchThrowableOfType(call, MismatchedWorkbasketPermissionException.class);
assertThat(e.getCurrentUserId()).isEqualTo("user-1-2");
assertThat(e.getWorkbasketId()).isEqualTo(defaultWorkbasket.getId());
assertThat(e.getRequiredPermissions()).containsExactly(WorkbasketPermission.READ);
}
@WithAccessId(user = "user-1-1")
@Test
void should_CreateTaskComment_When_CopyingAnotherComment() throws Exception {
TaskComment taskCommentToCreate = comment1.copy();
taskService.createTaskComment(taskCommentToCreate);
List<TaskComment> taskCommentsAfterInsert =
taskService.getTaskComments(taskWithComments.getId());
assertThat(taskCommentsAfterInsert)
.containsExactlyInAnyOrder(comment1, comment2, taskCommentToCreate);
}
@WithAccessId(user = "user-1-1")
@Test
void should_FailToCreateTaskComment_When_TaskIdIsNullOrNonExisting() throws Exception {
TaskComment newTaskCommentForNonExistingTask =
taskService.newTaskComment("Definitely non existing ID");
newTaskCommentForNonExistingTask.setTextField("a newly created taskComment");
TaskComment newTaskCommentForTaskIdNull = taskService.newTaskComment(null);
newTaskCommentForTaskIdNull.setTextField("a newly created taskComment");
ThrowingCallable call = () -> taskService.createTaskComment(newTaskCommentForNonExistingTask);
TaskNotFoundException e = catchThrowableOfType(call, TaskNotFoundException.class);
assertThat(e.getTaskId()).isEqualTo("Definitely non existing ID");
call = () -> taskService.createTaskComment(newTaskCommentForTaskIdNull);
e = catchThrowableOfType(call, TaskNotFoundException.class);
assertThat(e.getTaskId()).isNull();
}
}

View File

@ -1,61 +0,0 @@
package acceptance.taskcomment.create;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import acceptance.AbstractAccTest;
import java.util.List;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import pro.taskana.common.test.security.JaasExtension;
import pro.taskana.common.test.security.WithAccessId;
import pro.taskana.task.api.TaskService;
import pro.taskana.task.api.exceptions.TaskNotFoundException;
import pro.taskana.task.api.models.TaskComment;
@ExtendWith(JaasExtension.class)
class CreateTaskCommentAccTest extends AbstractAccTest {
@WithAccessId(user = "user-1-2")
@Test
void should_CreateTaskComment_For_TaskComment() throws Exception {
TaskService taskService = taskanaEngine.getTaskService();
List<TaskComment> taskComments =
taskService.getTaskComments("TKI:000000000000000000000000000000000027");
assertThat(taskComments).hasSize(2);
TaskComment taskCommentToCreate =
taskService.newTaskComment("TKI:000000000000000000000000000000000027");
taskCommentToCreate.setTextField("a newly created taskComment");
taskService.createTaskComment(taskCommentToCreate);
// make sure that the new task comment was added
List<TaskComment> taskCommentsAfterInsert =
taskService.getTaskComments("TKI:000000000000000000000000000000000027");
assertThat(taskCommentsAfterInsert).hasSize(3);
}
@WithAccessId(user = "user-1-2")
@Test
void should_FailToCreateTaskComment_When_TaskIdIsNullOrNonExisting() {
TaskService taskService = taskanaEngine.getTaskService();
TaskComment newTaskCommentForNonExistingTask =
taskService.newTaskComment("Definately non existing ID");
newTaskCommentForNonExistingTask.setTextField("a newly created taskComment");
TaskComment newTaskCommentForTaskIdNull = taskService.newTaskComment(null);
newTaskCommentForTaskIdNull.setTextField("a newly created taskComment");
assertThatThrownBy(() -> taskService.createTaskComment(newTaskCommentForNonExistingTask))
.isInstanceOf(TaskNotFoundException.class);
assertThatThrownBy(() -> taskService.createTaskComment(newTaskCommentForTaskIdNull))
.isInstanceOf(TaskNotFoundException.class);
}
}