Skip to content

Commit

Permalink
[CIRCSTORE-502] Add ecsRequestPhase field to request schema (#462)
Browse files Browse the repository at this point in the history
* CIRCSTORE-502 add ecsRequestPhase field to request schema

* CIRCSTORE-502 add tests
  • Loading branch information
roman-barannyk authored Apr 22, 2024
1 parent 8e65a7a commit 2d74a75
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 6 deletions.
2 changes: 1 addition & 1 deletion descriptors/ModuleDescriptor-template.json
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@
},
{
"id": "request-storage",
"version": "6.0",
"version": "6.1",
"handlers": [
{
"methods": ["GET"],
Expand Down
5 changes: 5 additions & 0 deletions ramls/request.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,11 @@
"type": "string",
"enum": ["Hold", "Recall", "Page"]
},
"ecsRequestPhase": {
"description": "Stage in ECS request process, absence of this field means this is a single-tenant request",
"type": "string",
"enum": ["Primary", "Secondary"]
},
"requestDate": {
"description": "Date the request was made",
"type": "string",
Expand Down
40 changes: 40 additions & 0 deletions src/test/java/org/folio/rest/api/RequestsApiTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -1958,6 +1958,46 @@ public void cannotCreateRequestWithoutStatus()
)));
}

@Test
public void canCreateRequestWithEcsRequestPhase() throws MalformedURLException,
ExecutionException, InterruptedException, TimeoutException {

JsonObject representation = createEntity(
new RequestRequestBuilder()
.page()
.primary()
.withId(UUID.randomUUID())
.create(),
requestStorageUrl()).getJson();
assertThat(representation.getString("ecsRequestPhase"), is("Primary"));

representation = createEntity(
new RequestRequestBuilder()
.page()
.secondary()
.withId(UUID.randomUUID())
.create(),
requestStorageUrl()).getJson();
assertThat(representation.getString("ecsRequestPhase"), is("Secondary"));
}

@Test
public void shouldReturn400IfInvalidEcsRequestPhase() throws MalformedURLException,
ExecutionException, InterruptedException, TimeoutException {

var request = new RequestRequestBuilder()
.page()
.withEcsRequestPhase("Invalid")
.withId(UUID.randomUUID())
.create();

CompletableFuture<JsonResponse> createCompleted = new CompletableFuture<>();
client.post(requestStorageUrl(), request, TENANT_ID, ResponseHandler.json(createCompleted));

assertThat(createCompleted.get(5, TimeUnit.SECONDS).getStatusCode(), is(400));
}


private RequestDto.RequestDtoBuilder holdShelfOpenRequest() {
return RequestDto.builder()
.requesterId(UUID.randomUUID().toString())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ public class RequestRequestBuilder extends JsonBuilder {
private final String patronComments;
private final UUID holdingsRecordId;
private final SearchIndex searchIndex;
private final String ecsRequestPhase;

public RequestRequestBuilder() {
this(UUID.randomUUID(),
Expand Down Expand Up @@ -79,6 +80,7 @@ public RequestRequestBuilder() {
null,
null,
UUID.randomUUID(),
null,
null);
}

Expand All @@ -101,6 +103,7 @@ public JsonObject create() {
put(request, "requestExpirationDate", this.requestExpirationDate);
put(request, "holdShelfExpirationDate", this.holdShelfExpirationDate);
put(request, "pickupServicePointId", this.pickupServicePointId);
put(request, "ecsRequestPhase", this.ecsRequestPhase);

if (this.itemSummary != null) {
final JsonObject item = new JsonObject();
Expand Down Expand Up @@ -204,7 +207,8 @@ public RequestRequestBuilder withNoId() {
this.tags,
this.patronComments,
this.holdingsRecordId,
this.searchIndex);
this.searchIndex,
this.ecsRequestPhase);
}

public RequestRequestBuilder toHoldShelf() {
Expand Down Expand Up @@ -247,7 +251,8 @@ public RequestRequestBuilder withItem(RequestItemSummary item) {
this.tags,
this.patronComments,
this.holdingsRecordId,
this.searchIndex);
this.searchIndex,
this.ecsRequestPhase);
}

public RequestRequestBuilder withRequester(
Expand Down Expand Up @@ -282,7 +287,8 @@ public RequestRequestBuilder withRequester(
this.tags,
this.patronComments,
this.holdingsRecordId,
this.searchIndex);
this.searchIndex,
this.ecsRequestPhase);
}

public RequestRequestBuilder withRequester(
Expand Down Expand Up @@ -316,7 +322,8 @@ public RequestRequestBuilder withRequester(
this.tags,
this.patronComments,
this.holdingsRecordId,
this.searchIndex);
this.searchIndex,
this.ecsRequestPhase);
}

public RequestRequestBuilder withProxy(
Expand Down Expand Up @@ -350,7 +357,8 @@ public RequestRequestBuilder withProxy(
this.tags,
this.patronComments,
this.holdingsRecordId,
this.searchIndex);
this.searchIndex,
this.ecsRequestPhase);
}
public RequestRequestBuilder withNoPosition() {
return withPosition(null);
Expand All @@ -375,4 +383,12 @@ private class PatronSummary {
}
}

public RequestRequestBuilder primary() {
return withEcsRequestPhase("Primary");
}

public RequestRequestBuilder secondary() {
return withEcsRequestPhase("Secondary");
}

}

0 comments on commit 2d74a75

Please sign in to comment.