TSK-1943: added REST endpoint for requesting changes on a Task

This commit is contained in:
Mustapha Zorgati 2022-08-11 16:24:13 +02:00
parent 42f7eea2f2
commit bbb01653f5
6 changed files with 64 additions and 0 deletions

View File

@ -38,6 +38,7 @@ INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000032', 'ETI:0000000
INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000033', 'ETI:000000000000000000000000000000000033', RELATIVE_DATE(-1) , null , null , RELATIVE_DATE(0) , null , RELATIVE_DATE(-1) , RELATIVE_DATE(1) , 'Widerruf' , 'creator_user_id' , 'Widerruf' , null , 2 , -1 , 'READY' , 'EXTERN' , 'L1050' , 'CLI:100000000000000000000000000000000003', 'WBI:100000000000000000000000000000000007' , 'USER-1-2' , 'DOMAIN_A', 'PI_0000000000033' , 'DOC_0000000000000000033' , 'user-1-2' , 'DEFG00' , 'PASystem' , '00' , 'SDNR' , '98765432' , true , false , null , 'NONE' , null , null , null , null , null , null , null , null , null , null , null , null , null , null , 'abc' , null , null , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ); INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000033', 'ETI:000000000000000000000000000000000033', RELATIVE_DATE(-1) , null , null , RELATIVE_DATE(0) , null , RELATIVE_DATE(-1) , RELATIVE_DATE(1) , 'Widerruf' , 'creator_user_id' , 'Widerruf' , null , 2 , -1 , 'READY' , 'EXTERN' , 'L1050' , 'CLI:100000000000000000000000000000000003', 'WBI:100000000000000000000000000000000007' , 'USER-1-2' , 'DOMAIN_A', 'PI_0000000000033' , 'DOC_0000000000000000033' , 'user-1-2' , 'DEFG00' , 'PASystem' , '00' , 'SDNR' , '98765432' , true , false , null , 'NONE' , null , null , null , null , null , null , null , null , null , null , null , null , null , null , 'abc' , null , null , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000034', 'ETI:000000000000000000000000000000000034', RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , null , RELATIVE_DATE(0) , null , RELATIVE_DATE(-1) , RELATIVE_DATE(2) , 'Widerruf' , 'creator_user_id' , 'Widerruf' , null , 2 , -1 , 'CLAIMED' , 'EXTERN' , 'L1050' , 'CLI:100000000000000000000000000000000003', 'WBI:100000000000000000000000000000000007' , 'USER-1-2' , 'DOMAIN_A', 'PI_0000000000034' , 'DOC_0000000000000000034' , 'user-1-1' , 'GHIJ00' , 'PASystem' , '00' , 'SDNR' , '98765432' , true , false , null , 'NONE' , null , null , null , null , null , null , null , null , null , null , null , null , null , null , 'abc' , null , null , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ); INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000034', 'ETI:000000000000000000000000000000000034', RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , null , RELATIVE_DATE(0) , null , RELATIVE_DATE(-1) , RELATIVE_DATE(2) , 'Widerruf' , 'creator_user_id' , 'Widerruf' , null , 2 , -1 , 'CLAIMED' , 'EXTERN' , 'L1050' , 'CLI:100000000000000000000000000000000003', 'WBI:100000000000000000000000000000000007' , 'USER-1-2' , 'DOMAIN_A', 'PI_0000000000034' , 'DOC_0000000000000000034' , 'user-1-1' , 'GHIJ00' , 'PASystem' , '00' , 'SDNR' , '98765432' , true , false , null , 'NONE' , null , null , null , null , null , null , null , null , null , null , null , null , null , null , 'abc' , null , null , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000035', 'ETI:000000000000000000000000000000000035', RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , null , RELATIVE_DATE(0) , null , RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , 'Widerruf' , 'creator_user_id' , 'Widerruf' , null , 2 , -1 , 'CLAIMED' , 'EXTERN' , 'L1050' , 'CLI:100000000000000000000000000000000003', 'WBI:100000000000000000000000000000000007' , 'USER-1-2' , 'DOMAIN_A', 'PI_0000000000035' , 'DOC_0000000000000000035' , 'user-1-1' , '00' , 'PASystem' , '00' , 'SDNR' , '98765432' , true , false , null , 'NONE' , null , null , null , null , null , null , null , null , null , null , null , null , null , null , 'abc' , null , null , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ); INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000035', 'ETI:000000000000000000000000000000000035', RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , null , RELATIVE_DATE(0) , null , RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , 'Widerruf' , 'creator_user_id' , 'Widerruf' , null , 2 , -1 , 'CLAIMED' , 'EXTERN' , 'L1050' , 'CLI:100000000000000000000000000000000003', 'WBI:100000000000000000000000000000000007' , 'USER-1-2' , 'DOMAIN_A', 'PI_0000000000035' , 'DOC_0000000000000000035' , 'user-1-1' , '00' , 'PASystem' , '00' , 'SDNR' , '98765432' , true , false , null , 'NONE' , null , null , null , null , null , null , null , null , null , null , null , null , null , null , 'abc' , null , null , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000136', 'ETI:000000000000000000000000000000000136', RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , null , RELATIVE_DATE(0) , null , RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , 'Widerruf' , 'creator_user_id' , 'Widerruf' , null , 2 , -1 , 'IN_REVIEW' , 'EXTERN' , 'L1050' , 'CLI:100000000000000000000000000000000003', 'WBI:100000000000000000000000000000000007' , 'USER-1-2' , 'DOMAIN_A', 'PI_0000000000035' , 'DOC_0000000000000000035' , 'user-1-1' , '00' , 'PASystem' , '00' , 'SDNR' , '98765432' , true , false , null , 'NONE' , null , null , null , null , null , null , null , null , null , null , null , null , null , null , 'abc' , null , null , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000100', 'ETI:000000000000000000000000000000000100', RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , null , RELATIVE_DATE(0) , null , RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , 'Widerruf' , 'creator_user_id' , 'Widerruf' , null , 2 , -1 , 'CLAIMED' , 'EXTERN' , 'L1050' , 'CLI:100000000000000000000000000000000003', 'WBI:100000000000000000000000000000000007' , 'USER-1-2' , 'DOMAIN_A', 'PI_0000000000100' , 'DOC_0000000000000000100' , 'user-1-2' , '00' , 'PASystem' , '00' , 'SDNR' , '98765432' , true , false , null , 'NONE' , null , null , null , null , null , null , null , null , null , null , null , null , null , null , 'abc' , null , null , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ); INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000100', 'ETI:000000000000000000000000000000000100', RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , null , RELATIVE_DATE(0) , null , RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , 'Widerruf' , 'creator_user_id' , 'Widerruf' , null , 2 , -1 , 'CLAIMED' , 'EXTERN' , 'L1050' , 'CLI:100000000000000000000000000000000003', 'WBI:100000000000000000000000000000000007' , 'USER-1-2' , 'DOMAIN_A', 'PI_0000000000100' , 'DOC_0000000000000000100' , 'user-1-2' , '00' , 'PASystem' , '00' , 'SDNR' , '98765432' , true , false , null , 'NONE' , null , null , null , null , null , null , null , null , null , null , null , null , null , null , 'abc' , null , null , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000101', 'ETI:000000000000000000000000000000000101', RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , null , RELATIVE_DATE(0) , null , RELATIVE_DATE(-1) , RELATIVE_DATE(2) , 'Widerruf' , 'creator_user_id' , 'Widerruf' , null , 2 , -1 , 'CLAIMED' , 'EXTERN' , 'L1050' , 'CLI:100000000000000000000000000000000003', 'WBI:100000000000000000000000000000000007' , 'USER-1-2' , 'DOMAIN_A', 'PI_0000000000101' , 'DOC_0000000000000000101' , 'user-1-2' , '00' , 'PASystem' , '00' , 'SDNR' , '98765432' , true , false , null , 'NONE' , null , null , null , null , null , 'el' , null , null , null , null , null , null , null , null , 'abc' , null , null , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ); INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000101', 'ETI:000000000000000000000000000000000101', RELATIVE_DATE(-1) , RELATIVE_DATE(-1) , null , RELATIVE_DATE(0) , null , RELATIVE_DATE(-1) , RELATIVE_DATE(2) , 'Widerruf' , 'creator_user_id' , 'Widerruf' , null , 2 , -1 , 'CLAIMED' , 'EXTERN' , 'L1050' , 'CLI:100000000000000000000000000000000003', 'WBI:100000000000000000000000000000000007' , 'USER-1-2' , 'DOMAIN_A', 'PI_0000000000101' , 'DOC_0000000000000000101' , 'user-1-2' , '00' , 'PASystem' , '00' , 'SDNR' , '98765432' , true , false , null , 'NONE' , null , null , null , null , null , 'el' , null , null , null , null , null , null , null , null , 'abc' , null , null , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );
INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000102', 'ETI:000000000000000000000000000000000102', RELATIVE_DATE(-2) , RELATIVE_DATE(-1) , null , RELATIVE_DATE(0) , null , RELATIVE_DATE(-2) , RELATIVE_DATE(2) , 'Widerruf' , 'creator_user_id' , 'Widerruf' , null , 2 , -1 , 'CLAIMED' , 'EXTERN' , 'L1050' , 'CLI:100000000000000000000000000000000003', 'WBI:100000000000000000000000000000000007' , 'USER-1-2' , 'DOMAIN_A', 'PI_0000000000102' , 'DOC_0000000000000000102' , 'user-1-2' , '00' , 'PASystem' , '00' , 'SDNR' , '98765432' , true , false , null , 'NONE' , null , null , null , null , null , null , null , null , null , null , null , null , null , null , 'abc' , null , null , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ); INSERT INTO TASK VALUES('TKI:000000000000000000000000000000000102', 'ETI:000000000000000000000000000000000102', RELATIVE_DATE(-2) , RELATIVE_DATE(-1) , null , RELATIVE_DATE(0) , null , RELATIVE_DATE(-2) , RELATIVE_DATE(2) , 'Widerruf' , 'creator_user_id' , 'Widerruf' , null , 2 , -1 , 'CLAIMED' , 'EXTERN' , 'L1050' , 'CLI:100000000000000000000000000000000003', 'WBI:100000000000000000000000000000000007' , 'USER-1-2' , 'DOMAIN_A', 'PI_0000000000102' , 'DOC_0000000000000000102' , 'user-1-2' , '00' , 'PASystem' , '00' , 'SDNR' , '98765432' , true , false , null , 'NONE' , null , null , null , null , null , null , null , null , null , null , null , null , null , null , 'abc' , null , null , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 );

View File

@ -105,6 +105,7 @@ include::{snippets}/TaskControllerRestDocTest/selectAndClaimTaskDocTest/auto-sec
include::{snippets}/TaskControllerRestDocTest/cancelClaimTaskDocTest/auto-section.adoc[] include::{snippets}/TaskControllerRestDocTest/cancelClaimTaskDocTest/auto-section.adoc[]
include::{snippets}/TaskControllerRestDocTest/forceCancelClaimTaskDocTest/auto-section.adoc[] include::{snippets}/TaskControllerRestDocTest/forceCancelClaimTaskDocTest/auto-section.adoc[]
include::{snippets}/TaskControllerRestDocTest/requestReviewTaskDocTest/auto-section.adoc[] include::{snippets}/TaskControllerRestDocTest/requestReviewTaskDocTest/auto-section.adoc[]
include::{snippets}/TaskControllerRestDocTest/requestChangesTaskDocTest/auto-section.adoc[]
include::{snippets}/TaskControllerRestDocTest/completeTaskDocTest/auto-section.adoc[] include::{snippets}/TaskControllerRestDocTest/completeTaskDocTest/auto-section.adoc[]
include::{snippets}/TaskControllerRestDocTest/cancelTaskDocTest/auto-section.adoc[] include::{snippets}/TaskControllerRestDocTest/cancelTaskDocTest/auto-section.adoc[]
include::{snippets}/TaskControllerRestDocTest/transferTaskDocTest/auto-section.adoc[] include::{snippets}/TaskControllerRestDocTest/transferTaskDocTest/auto-section.adoc[]

View File

@ -47,6 +47,8 @@ public final class RestEndpoints {
public static final String URL_TASKS_ID_CLAIM_FORCE = API_V1 + "tasks/{taskId}/claim/force"; public static final String URL_TASKS_ID_CLAIM_FORCE = API_V1 + "tasks/{taskId}/claim/force";
public static final String URL_TASKS_ID_SELECT_AND_CLAIM = API_V1 + "tasks/select-and-claim"; public static final String URL_TASKS_ID_SELECT_AND_CLAIM = API_V1 + "tasks/select-and-claim";
public static final String URL_TASKS_ID_REQUEST_REVIEW = API_V1 + "tasks/{taskId}/request-review"; public static final String URL_TASKS_ID_REQUEST_REVIEW = API_V1 + "tasks/{taskId}/request-review";
public static final String URL_TASKS_ID_REQUEST_CHANGES =
API_V1 + "tasks/{taskId}/request-changes";
public static final String URL_TASKS_ID_COMPLETE = API_V1 + "tasks/{taskId}/complete"; public static final String URL_TASKS_ID_COMPLETE = API_V1 + "tasks/{taskId}/complete";
public static final String URL_TASKS_ID_CANCEL = API_V1 + "tasks/{taskId}/cancel"; public static final String URL_TASKS_ID_CANCEL = API_V1 + "tasks/{taskId}/cancel";
public static final String URL_TASKS_ID_TRANSFER_WORKBASKET_ID = public static final String URL_TASKS_ID_TRANSFER_WORKBASKET_ID =

View File

@ -224,6 +224,27 @@ public class TaskController {
return ResponseEntity.ok(taskRepresentationModelAssembler.toModel(task)); return ResponseEntity.ok(taskRepresentationModelAssembler.toModel(task));
} }
/**
* This endpoint request changes on the specified Task.
*
* @param taskId the id of the relevant Task
* @return the Task after changes have been requested
* @throws InvalidTaskStateException if the state of the Task with taskId is not IN_REVIEW
* @throws TaskNotFoundException if the Task with taskId wasn't found
* @throws InvalidOwnerException if the Task is claimed by another user
* @throws NotAuthorizedException if the current user has no READ permissions for the Workbasket
* the Task is in
* @title Request changes on a Task
*/
@PostMapping(path = RestEndpoints.URL_TASKS_ID_REQUEST_CHANGES)
@Transactional(rollbackFor = Exception.class)
public ResponseEntity<TaskRepresentationModel> requestChanges(@PathVariable String taskId)
throws InvalidTaskStateException, TaskNotFoundException, InvalidOwnerException,
NotAuthorizedException {
Task task = taskService.requestChanges(taskId);
return ResponseEntity.ok(taskRepresentationModelAssembler.toModel(task));
}
/** /**
* This endpoint selects the first Task returned by the Task Query and claims it. * This endpoint selects the first Task returned by the Task Query and claims it.
* *

View File

@ -1420,6 +1420,34 @@ class TaskControllerIntTest {
assertThat(repModel.getState()).isEqualTo(TaskState.READY_FOR_REVIEW); assertThat(repModel.getState()).isEqualTo(TaskState.READY_FOR_REVIEW);
} }
@Test
void should_RequestChangesOnATask() {
String url =
restHelper.toUrl(RestEndpoints.URL_TASKS_ID, "TKI:000000000000000000000000000000000136");
HttpEntity<Object> auth = new HttpEntity<>(RestHelper.generateHeadersForUser("user-1-1"));
// retrieve task from Rest Api
ResponseEntity<TaskRepresentationModel> getTaskResponse =
TEMPLATE.exchange(url, HttpMethod.GET, auth, TASK_MODEL_TYPE);
assertThat(getTaskResponse.getBody()).isNotNull();
TaskRepresentationModel repModel = getTaskResponse.getBody();
assertThat(repModel.getState()).isEqualTo(TaskState.IN_REVIEW);
assertThat(repModel.getOwner()).isEqualTo("user-1-1");
// request changes
String url2 =
restHelper.toUrl(
RestEndpoints.URL_TASKS_ID_REQUEST_CHANGES, "TKI:000000000000000000000000000000000136");
ResponseEntity<TaskRepresentationModel> requestedChangesResponse =
TEMPLATE.exchange(url2, HttpMethod.POST, auth, TASK_MODEL_TYPE);
assertThat(requestedChangesResponse.getBody()).isNotNull();
assertThat(requestedChangesResponse.getStatusCode()).isEqualTo(HttpStatus.OK);
repModel = requestedChangesResponse.getBody();
assertThat(repModel.getOwner()).isNull();
assertThat(repModel.getState()).isEqualTo(TaskState.READY);
}
@Test @Test
void should_UpdateTaskOwnerOfReadyTask() { void should_UpdateTaskOwnerOfReadyTask() {
final String url = restHelper.toUrl("/api/v1/tasks/TKI:000000000000000000000000000000000025"); final String url = restHelper.toUrl("/api/v1/tasks/TKI:000000000000000000000000000000000025");

View File

@ -91,6 +91,17 @@ class TaskControllerRestDocTest extends BaseRestDocTest {
.andExpect(MockMvcResultMatchers.status().isOk()); .andExpect(MockMvcResultMatchers.status().isOk());
} }
@Test
void requestChangesTaskDocTest() throws Exception {
mockMvc
.perform(
post(
RestEndpoints.URL_TASKS_ID_REQUEST_CHANGES,
"TKI:000000000000000000000000000000000136")
.headers(RestHelper.generateHeadersForUser("user-1-1")))
.andExpect(MockMvcResultMatchers.status().isOk());
}
@Test @Test
void selectAndClaimTaskDocTest() throws Exception { void selectAndClaimTaskDocTest() throws Exception {
mockMvc mockMvc