diff --git a/README.md b/README.md index 9cbd45f79..dd190d6a9 100644 --- a/README.md +++ b/README.md @@ -119,5 +119,4 @@ X-Powered-By: Undertow/1 Server: WildFly/10 Content-Length: 0 Date: Tue, 03 Dec 2019 16:14:28 GMT -``` - +``` \ No newline at end of file diff --git a/listing-command/listing-command-api/pom.xml b/listing-command/listing-command-api/pom.xml index b03a5de74..c40b847bd 100644 --- a/listing-command/listing-command-api/pom.xml +++ b/listing-command/listing-command-api/pom.xml @@ -4,7 +4,7 @@ listing-command uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-command/listing-command-handler/pom.xml b/listing-command/listing-command-handler/pom.xml index bde8e4e41..6a54af5d8 100644 --- a/listing-command/listing-command-handler/pom.xml +++ b/listing-command/listing-command-handler/pom.xml @@ -3,7 +3,7 @@ listing-command uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-command/pom.xml b/listing-command/pom.xml index 223c8b311..a77283e2b 100644 --- a/listing-command/pom.xml +++ b/listing-command/pom.xml @@ -3,7 +3,7 @@ listing-parent uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-common/pom.xml b/listing-common/pom.xml index 97adf0268..3b0095226 100644 --- a/listing-common/pom.xml +++ b/listing-common/pom.xml @@ -3,7 +3,7 @@ listing-parent uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-domain/listing-domain-aggregate/pom.xml b/listing-domain/listing-domain-aggregate/pom.xml index 63f4bc76f..36afe3c9b 100644 --- a/listing-domain/listing-domain-aggregate/pom.xml +++ b/listing-domain/listing-domain-aggregate/pom.xml @@ -3,7 +3,7 @@ listing-domain uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-domain/listing-domain-common/pom.xml b/listing-domain/listing-domain-common/pom.xml index 29105131f..892f4f79b 100644 --- a/listing-domain/listing-domain-common/pom.xml +++ b/listing-domain/listing-domain-common/pom.xml @@ -3,7 +3,7 @@ listing-domain uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-domain/listing-domain-event/pom.xml b/listing-domain/listing-domain-event/pom.xml index 9ac53a823..7074a4330 100644 --- a/listing-domain/listing-domain-event/pom.xml +++ b/listing-domain/listing-domain-event/pom.xml @@ -3,7 +3,7 @@ listing-domain uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-domain/listing-domain-xhibit/pom.xml b/listing-domain/listing-domain-xhibit/pom.xml index 237feac6b..ef2c8da77 100644 --- a/listing-domain/listing-domain-xhibit/pom.xml +++ b/listing-domain/listing-domain-xhibit/pom.xml @@ -3,7 +3,7 @@ listing-domain uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-domain/pom.xml b/listing-domain/pom.xml index fa57f5034..65c6854a9 100644 --- a/listing-domain/pom.xml +++ b/listing-domain/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.listing listing-parent - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT listing-domain diff --git a/listing-event-sources/pom.xml b/listing-event-sources/pom.xml index cc3f32006..43b800121 100644 --- a/listing-event-sources/pom.xml +++ b/listing-event-sources/pom.xml @@ -3,7 +3,7 @@ listing-parent uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-event/listing-event-listener/pom.xml b/listing-event/listing-event-listener/pom.xml index 5cff5df90..24b6887b1 100644 --- a/listing-event/listing-event-listener/pom.xml +++ b/listing-event/listing-event-listener/pom.xml @@ -3,7 +3,7 @@ listing-event uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-event/listing-event-processor/pom.xml b/listing-event/listing-event-processor/pom.xml index ef6642647..e31afb41e 100644 --- a/listing-event/listing-event-processor/pom.xml +++ b/listing-event/listing-event-processor/pom.xml @@ -3,7 +3,7 @@ listing-event uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-event/pom.xml b/listing-event/pom.xml index 84d188d00..d7cf0640e 100644 --- a/listing-event/pom.xml +++ b/listing-event/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.listing listing-parent - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-healthchecks/pom.xml b/listing-healthchecks/pom.xml index 8d1805b06..aed678e95 100644 --- a/listing-healthchecks/pom.xml +++ b/listing-healthchecks/pom.xml @@ -3,7 +3,7 @@ listing-parent uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-integration-test-persistence/pom.xml b/listing-integration-test-persistence/pom.xml index 860c91908..cc0819ad4 100644 --- a/listing-integration-test-persistence/pom.xml +++ b/listing-integration-test-persistence/pom.xml @@ -3,7 +3,7 @@ listing-parent uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-integration-test/pom.xml b/listing-integration-test/pom.xml index dd019932f..4b5278502 100644 --- a/listing-integration-test/pom.xml +++ b/listing-integration-test/pom.xml @@ -3,7 +3,7 @@ listing-parent uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/AbstractIT.java b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/AbstractIT.java index 51c8e4799..86b42610b 100644 --- a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/AbstractIT.java +++ b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/AbstractIT.java @@ -73,7 +73,7 @@ void setUp() { setupProgressionNotesStubs(); setupUsersGroupPermissionsForApplicationTypeStub(); databaseCleaner.cleanEventStoreTables(CONTEXT_NAME); - databaseCleaner.cleanViewStoreTables(CONTEXT_NAME, "stream_status", + databaseCleaner.cleanViewStoreTables(CONTEXT_NAME, "stream_status","processed_event", "stream_buffer", "hearing", "hearing_days", "listing_notes", "cache_refdata_courtroom", "court_list_publish_status", "published_court_list"); } diff --git a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/RangeSearchQueryForCourtCalendarIT.java b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/RangeSearchQueryForCourtCalendarIT.java index cbe83d4f6..94465aa6b 100644 --- a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/RangeSearchQueryForCourtCalendarIT.java +++ b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/it/RangeSearchQueryForCourtCalendarIT.java @@ -43,7 +43,6 @@ @SuppressWarnings({"squid:S1607"}) public class RangeSearchQueryForCourtCalendarIT extends AbstractIT { - private static final String CONTEXT_NAME = "listing"; private static final Map COURT_ROOMS = new LinkedHashMap<>() {{ put(fromString("1d0199f8-8812-48a2-b13c-837e1c03ff19"), "Courtroom 01"); put(fromString("18982e9c-2475-36a4-a852-09ab720acfc9"), "Courtroom 03"); diff --git a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/steps/WeekCommencingHearingSteps.java b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/steps/WeekCommencingHearingSteps.java index dda443fc1..84b8ad467 100644 --- a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/steps/WeekCommencingHearingSteps.java +++ b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/steps/WeekCommencingHearingSteps.java @@ -7,7 +7,7 @@ import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.core.IsEqual.equalTo; +import static org.hamcrest.Matchers.is; import static uk.gov.moj.cpp.listing.helper.SearchHearingHelper.getHearingFilter; import static uk.gov.moj.cpp.listing.helper.SearchHearingHelper.pollForHearing; import static uk.gov.moj.cpp.listing.steps.UpdateHearingSteps.DEFAULT_DURATION_HOURS_MINS; @@ -46,10 +46,17 @@ public void whenHearingIsUpdatedForListingForWeekCommencingDate() { request = prepareJsonForUpdatedHearingData(updatedHearingData); - final Response response = restClient.postCommand(updateHearingUrl, MEDIA_TYPE_UPDATE_HEARING_FOR_LISTING, - request, getLoggedInHeader()); - - assertThat(response.getStatus(), equalTo(SC_ACCEPTED)); + try (Response response = restClient.postCommand(updateHearingUrl, MEDIA_TYPE_UPDATE_HEARING_FOR_LISTING, request, getLoggedInHeader())) { + + String responseBody = ""; + try { + responseBody = response.readEntity(String.class); + } catch (IllegalStateException e) { + //no-op in case of no response + } + assertThat(format("Post returned not expected status code with body: %s", responseBody), + response.getStatus(), is(SC_ACCEPTED)); + } } public void verifyHearingUpdatedWithWeekCommencingDateAndUnallocatedWhenQueryingFromAPI() { diff --git a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/utils/FileUtil.java b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/utils/FileUtil.java index b26641c28..2bd993f6a 100644 --- a/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/utils/FileUtil.java +++ b/listing-integration-test/src/test/java/uk/gov/moj/cpp/listing/utils/FileUtil.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.listing.utils; import static java.nio.charset.Charset.defaultCharset; -import static javax.json.Json.createReader; +import static uk.gov.justice.services.messaging.JsonObjects.createReader; import static org.apache.commons.io.FileUtils.readFileToString; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.IsNull.notNullValue; diff --git a/listing-json/pom.xml b/listing-json/pom.xml index 284064574..15c299526 100644 --- a/listing-json/pom.xml +++ b/listing-json/pom.xml @@ -4,7 +4,7 @@ listing-parent uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT listing-json diff --git a/listing-performance-test/pom.xml b/listing-performance-test/pom.xml index c219e68ff..a78625586 100644 --- a/listing-performance-test/pom.xml +++ b/listing-performance-test/pom.xml @@ -5,7 +5,7 @@ uk.gov.moj.cpp.listing listing-parent - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT listing-performance-test diff --git a/listing-query/listing-query-api/pom.xml b/listing-query/listing-query-api/pom.xml index 5311a7e21..47e948d2f 100644 --- a/listing-query/listing-query-api/pom.xml +++ b/listing-query/listing-query-api/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.listing listing-query - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT listing-query-api diff --git a/listing-query/listing-query-api/src/main/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApi.java b/listing-query/listing-query-api/src/main/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApi.java index 627a80017..ee32a3f51 100644 --- a/listing-query/listing-query-api/src/main/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApi.java +++ b/listing-query/listing-query-api/src/main/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApi.java @@ -9,6 +9,8 @@ import static uk.gov.justice.services.messaging.Envelope.metadataFrom; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilderWithFilter; +import static uk.gov.moj.cpp.listing.domain.CourtListType.ALPHABETICAL; +import static uk.gov.moj.cpp.listing.domain.CourtListType.JUDGE; import static uk.gov.moj.cpp.listing.domain.CourtListType.ONLINE_PUBLIC; import static uk.gov.moj.cpp.listing.domain.CourtListType.PUBLIC; @@ -25,7 +27,9 @@ import uk.gov.moj.cpp.listing.common.xhibit.ReferenceDataLoader; import uk.gov.moj.cpp.listing.domain.CourtListType; import uk.gov.moj.cpp.listing.domain.referencedata.OrganisationUnit; +import uk.gov.moj.cpp.listing.query.api.service.AlphabeticalCourtListService; import uk.gov.moj.cpp.listing.query.api.service.ReferenceDataService; +import uk.gov.moj.cpp.listing.query.document.generator.JudgeListTemplateAssembler; import uk.gov.moj.cpp.listing.query.document.generator.JudiciaryNameMapper; import uk.gov.moj.cpp.listing.query.document.generator.StandardPublicCourtListTemplateAssembler; import uk.gov.moj.cpp.listing.query.view.HearingQueryView; @@ -44,7 +48,6 @@ import javax.inject.Inject; import uk.gov.justice.services.messaging.JsonObjects; -import javax.json.Json; import javax.json.JsonArray; import javax.json.JsonArrayBuilder; import javax.json.JsonObject; @@ -67,6 +70,8 @@ public class HearingQueryApi { public static final String RESTRICTED = "restricted"; public static final String INCLUDE_APPLICATIONS = "includeApplications"; private static final String LIST_ID = "listId"; + private static final String START_DATE = "startDate"; + private static final String END_DATE = "endDate"; private static final String OU_L2_CODE = "oucodeL2Code"; private static final String FIRST_NAME = "firstName"; private static final String LAST_NAME = "lastName"; @@ -103,6 +108,12 @@ public class HearingQueryApi { @Inject private StandardPublicCourtListTemplateAssembler standardPublicCourtListAssembler; + @Inject + private AlphabeticalCourtListService alphabeticalCourtListService; + + @Inject + private JudgeListTemplateAssembler judgeListTemplateAssembler; + @Inject private ReferenceDataService referenceDataService; @@ -185,18 +196,23 @@ public JsonEnvelope searchHearingsForCourtListPayload(final JsonEnvelope query) final String courtCentreId = query.payloadAsJsonObject().getString(COURT_CENTRE_ID, null); final String courtRoomId = query.payloadAsJsonObject().getString(COURT_ROOM_ID, null); + final String startDate = query.payloadAsJsonObject().getString(START_DATE, null); final String listId = query.payloadAsJsonObject().getString(LIST_ID); final boolean restricted = Optional.ofNullable(query.payloadAsJsonObject().get(RESTRICTED)).map(restrictedJson -> Boolean.valueOf(restrictedJson.toString())).orElse(false); final boolean includeApplications = Optional.ofNullable(query.payloadAsJsonObject().get(INCLUDE_APPLICATIONS)).map(includeApplicationsJson -> Boolean.valueOf(includeApplicationsJson.toString())).orElse(false); final Optional courtListType = CourtListType.valueFor(listId); if(courtListType.isPresent()) { - final JsonEnvelope queryResponse = hearingQueryView.getCourtListContent(query); - final Optional courtListData = standardPublicCourtListAssembler.assemble(queryResponse, courtCentreId, courtRoomId, courtListType.get(), restricted, includeApplications); + final CourtListType listType = courtListType.get(); + // JUDGE uses a different query (range search by judge); all other types use the standard court list content. + final JsonEnvelope queryResponse = JUDGE.equals(listType) + ? hearingQueryView.rangeSearchHearingsForJudge(query) + : hearingQueryView.getCourtListContent(query); + final Optional courtListData = buildCourtListData(queryResponse, courtCentreId, courtRoomId, listType, restricted, includeApplications, startDate); if (courtListData.isPresent()) { final JsonObject courtListPayload = courtListData.get(); final boolean isWelsh = referenceDataService.isHearingLanguageWelsh(queryResponse, courtCentreId).orElse(false); - final String templateName = getTemplateName(courtListType.get(), isWelsh); + final String templateName = getTemplateName(listType, isWelsh); final JsonObjectBuilder builder = JsonObjects.createObjectBuilder(); courtListPayload.forEach(builder::add); builder.add("templateName", templateName); @@ -218,16 +234,16 @@ public JsonEnvelope getDailyList(final JsonEnvelope query) { final String weekCommencingStartDate = payload.getString(WEEK_COMMENCING_START_DATE, null); final boolean isWeekCommencing = weekCommencingStartDate != null; - final String startDate = isWeekCommencing ? weekCommencingStartDate : payload.getString("startDate"); + final String startDate = isWeekCommencing ? weekCommencingStartDate : payload.getString(START_DATE); final String weekCommencingEndDate = isWeekCommencing ? payload.getString(WEEK_COMMENCING_END_DATE, null) : null; - final String endDate = isWeekCommencing ? weekCommencingEndDate : payload.getString("endDate", null); + final String endDate = isWeekCommencing ? weekCommencingEndDate : payload.getString(END_DATE, null); final JsonObjectBuilder requestPayloadBuilder = JsonObjects.createObjectBuilder() .add(COURT_CENTRE_ID, courtCentreId) - .add("startDate", startDate) + .add(START_DATE, startDate) .add("publishCourtListType", documentType); if (endDate != null) { - requestPayloadBuilder.add("endDate", endDate); + requestPayloadBuilder.add(END_DATE, endDate); } final JsonEnvelope courtListEnvelope = envelopeFrom( metadataFrom(query.metadata()).withName("listing.courtlist"), @@ -518,8 +534,25 @@ private JsonEnvelope processGetCaseByDefendant(final JsonObject payload, final S return this.hearingQueryView.getCasesByDefendantAndHearingDate(caseIds, defendants, hearingDate, query); } + /** + * Builds the court list payload for the given type, routing ALPHABETICAL and JUDGE to their dedicated + * assemblers (mirroring the binary /courtlist endpoint). Without this, those types fall through to the + * standard assembler and yield an empty payload. + */ + private Optional buildCourtListData(final JsonEnvelope queryResponse, final String courtCentreId, final String courtRoomId, + final CourtListType courtListType, final boolean restricted, + final boolean includeApplications, final String startDate) { + if (ALPHABETICAL.equals(courtListType)) { + return alphabeticalCourtListService.buildAlphabeticalCourtListData(queryResponse, courtCentreId); + } + if (JUDGE.equals(courtListType)) { + return judgeListTemplateAssembler.assemble(queryResponse, courtCentreId, courtRoomId, courtListType, startDate); + } + return standardPublicCourtListAssembler.assemble(queryResponse, courtCentreId, courtRoomId, courtListType, restricted, includeApplications); + } + private String getTemplateName(final CourtListType courtListType, boolean welsh) { - if ((PUBLIC.equals(courtListType) || ONLINE_PUBLIC.equals(courtListType)) && welsh) { + if ((ALPHABETICAL.equals(courtListType) || PUBLIC.equals(courtListType) || ONLINE_PUBLIC.equals(courtListType)) && welsh) { return courtListType.getWelshTemplateName(); } return courtListType.getTemplateName(); @@ -568,7 +601,7 @@ private JsonArrayBuilder buildApplicationsWithEnrichedPayload(final JsonEnvelope if (appDetails.isPresent()) { final CourtApplication courtApplicationObj = jsonObjectToObjectConverter.convert(appDetails.get().getJsonObject("courtApplication"), CourtApplication.class); - final JsonObjectBuilder appBuilder = Json.createObjectBuilder(); + final JsonObjectBuilder appBuilder = JsonObjects.createObjectBuilder(); application.forEach(appBuilder::add); appBuilder.add("applicationTypeCode", courtApplicationObj.getType().getCode()); applicationsBuilder.add(appBuilder.build()); @@ -584,7 +617,7 @@ private JsonArrayBuilder buildApplicationsWithEnrichedPayload(final JsonEnvelope } private static JsonObject buildHearingPayloadWithUpdatedApplications(final JsonObject hearing, final JsonArrayBuilder applicationsBuilder) { - final JsonObjectBuilder hearingBuilder = Json.createObjectBuilder(); + final JsonObjectBuilder hearingBuilder = JsonObjects.createObjectBuilder(); hearing.forEach((key, value) -> { if (!COURT_APPLICATIONS.equals(key)) { hearingBuilder.add(key, value); @@ -595,7 +628,7 @@ private static JsonObject buildHearingPayloadWithUpdatedApplications(final JsonO } private static @NonNull JsonObjectBuilder buildResponsePayloadWithUpdatedHearing(final JsonObject payload, final JsonArrayBuilder hearingsBuilder) { - final JsonObjectBuilder payloadBuilder = Json.createObjectBuilder(); + final JsonObjectBuilder payloadBuilder = JsonObjects.createObjectBuilder(); payload.forEach((key, value) -> { if (!HEARINGS.equals(key)) { payloadBuilder.add(key, value); diff --git a/listing-query/listing-query-api/src/test/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApiTest.java b/listing-query/listing-query-api/src/test/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApiTest.java index f26d3aa78..f965cb6dd 100644 --- a/listing-query/listing-query-api/src/test/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApiTest.java +++ b/listing-query/listing-query-api/src/test/java/uk/gov/moj/cpp/listing/query/api/HearingQueryApiTest.java @@ -19,8 +19,10 @@ import static org.junit.jupiter.api.Assertions.assertSame; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static uk.gov.justice.services.messaging.JsonEnvelope.envelopeFrom; @@ -31,6 +33,8 @@ import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopeMatcher.jsonEnvelope; import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopeMetadataMatcher.metadata; import static uk.gov.justice.services.test.utils.core.matchers.JsonEnvelopePayloadMatcher.payloadIsJson; +import static uk.gov.moj.cpp.listing.domain.CourtListType.ALPHABETICAL; +import static uk.gov.moj.cpp.listing.domain.CourtListType.JUDGE; import static uk.gov.moj.cpp.listing.domain.CourtListType.ONLINE_PUBLIC; import static uk.gov.moj.cpp.listing.domain.CourtListType.PRISON; import static uk.gov.moj.cpp.listing.domain.CourtListType.PUBLIC; @@ -49,8 +53,10 @@ import uk.gov.moj.cpp.listing.common.xhibit.ReferenceDataLoader; import uk.gov.moj.cpp.listing.domain.CourtListType; import uk.gov.moj.cpp.listing.domain.referencedata.OrganisationUnit; +import uk.gov.moj.cpp.listing.query.api.service.AlphabeticalCourtListService; import uk.gov.moj.cpp.listing.query.api.service.ReferenceDataService; import uk.gov.moj.cpp.listing.query.api.util.FileUtil; +import uk.gov.moj.cpp.listing.query.document.generator.JudgeListTemplateAssembler; import uk.gov.moj.cpp.listing.query.document.generator.JudiciaryNameMapper; import uk.gov.moj.cpp.listing.query.document.generator.StandardPublicCourtListTemplateAssembler; import uk.gov.moj.cpp.listing.query.view.HearingQueryView; @@ -118,6 +124,12 @@ public class HearingQueryApiTest { @Mock private StandardPublicCourtListTemplateAssembler standardPublicCourtListAssembler; + @Mock + private AlphabeticalCourtListService alphabeticalCourtListService; + + @Mock + private JudgeListTemplateAssembler judgeListTemplateAssembler; + @Mock private ReferenceDataService referenceDataService; @@ -333,6 +345,60 @@ public void shouldReturnPayloadWithTemplateNameWhenUshersMagistrateList() { assertThat(returnedEnvelope.payloadAsJsonObject().getString("templateName"), is("UshersMagistrateList")); } + @Test + public void shouldRouteAlphabeticalToAlphabeticalServiceAndReturnCourtListTemplate() { + final JsonEnvelope query = envelopeFrom( + metadataBuilder() + .withId(fromString("6d4ced64-b058-4bd4-a652-98d8230b92a5")) + .withName("listing.search.court.list.payload"), + createObjectBuilder() + .add(COURT_CENTRE_ID, randomUUID().toString()) + .add(COURT_ROOM_ID, randomUUID().toString()) + .add(LIST_ID, ALPHABETICAL.toString()) + .build()); + + final JsonEnvelope courtListContent = mock(JsonEnvelope.class); + when(hearingQueryView.getCourtListContent(query)).thenReturn(courtListContent); + when(alphabeticalCourtListService.buildAlphabeticalCourtListData(any(JsonEnvelope.class), any(String.class))) + .thenReturn(Optional.of(createObjectBuilder().add("id", "id1").build())); + when(referenceDataService.isHearingLanguageWelsh(any(JsonEnvelope.class), any(String.class))).thenReturn(Optional.empty()); + + final JsonEnvelope returnedEnvelope = hearingQueryApi.searchHearingsForCourtListPayload(query); + + assertThat(returnedEnvelope.payloadAsJsonObject().getString("id"), is("id1")); + assertThat(returnedEnvelope.payloadAsJsonObject().getString("templateName"), is("CourtList")); + verify(alphabeticalCourtListService).buildAlphabeticalCourtListData(any(JsonEnvelope.class), any(String.class)); + verify(standardPublicCourtListAssembler, never()).assemble(any(), any(), any(), any(), anyBoolean(), anyBoolean()); + } + + @Test + public void shouldRouteJudgeToJudgeAssemblerUsingJudgeRangeSearchAndReturnJudgeListTemplate() { + final JsonEnvelope query = envelopeFrom( + metadataBuilder() + .withId(fromString("6d4ced64-b058-4bd4-a652-98d8230b92a5")) + .withName("listing.search.court.list.payload"), + createObjectBuilder() + .add(COURT_CENTRE_ID, randomUUID().toString()) + .add(COURT_ROOM_ID, randomUUID().toString()) + .add("startDate", "2026-06-03") + .add(LIST_ID, JUDGE.toString()) + .build()); + + final JsonEnvelope judgeContent = mock(JsonEnvelope.class); + when(hearingQueryView.rangeSearchHearingsForJudge(query)).thenReturn(judgeContent); + when(judgeListTemplateAssembler.assemble(any(JsonEnvelope.class), any(String.class), any(String.class), any(CourtListType.class), any(String.class))) + .thenReturn(Optional.of(createObjectBuilder().add("id", "id1").build())); + when(referenceDataService.isHearingLanguageWelsh(any(JsonEnvelope.class), any(String.class))).thenReturn(Optional.empty()); + + final JsonEnvelope returnedEnvelope = hearingQueryApi.searchHearingsForCourtListPayload(query); + + assertThat(returnedEnvelope.payloadAsJsonObject().getString("id"), is("id1")); + assertThat(returnedEnvelope.payloadAsJsonObject().getString("templateName"), is("JudgeList")); + verify(hearingQueryView).rangeSearchHearingsForJudge(query); + verify(hearingQueryView, never()).getCourtListContent(query); + verify(judgeListTemplateAssembler).assemble(any(JsonEnvelope.class), any(String.class), any(String.class), any(CourtListType.class), any(String.class)); + } + @Test public void shouldReturnPayloadWithTemplateNameWhenOnlinePublicCourtList() { final JsonEnvelope query = envelopeFrom( @@ -1508,4 +1574,4 @@ private JsonObject returnAsJsonObject(final String expectedJsonPath) { } } -} \ No newline at end of file +} diff --git a/listing-query/listing-query-view/pom.xml b/listing-query/listing-query-view/pom.xml index 649d3eb3b..74f4b2344 100644 --- a/listing-query/listing-query-view/pom.xml +++ b/listing-query/listing-query-view/pom.xml @@ -4,7 +4,7 @@ uk.gov.moj.cpp.listing listing-query - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT listing-query-view diff --git a/listing-query/listing-query-view/src/test/java/uk/gov/moj/cpp/listing/query/view/service/ProgressionServiceTest.java b/listing-query/listing-query-view/src/test/java/uk/gov/moj/cpp/listing/query/view/service/ProgressionServiceTest.java index 8726239de..d36ca2b4b 100644 --- a/listing-query/listing-query-view/src/test/java/uk/gov/moj/cpp/listing/query/view/service/ProgressionServiceTest.java +++ b/listing-query/listing-query-view/src/test/java/uk/gov/moj/cpp/listing/query/view/service/ProgressionServiceTest.java @@ -1,7 +1,7 @@ package uk.gov.moj.cpp.listing.query.view.service; import static java.util.UUID.randomUUID; -import static javax.json.Json.createObjectBuilder; +import static uk.gov.justice.services.messaging.JsonObjects.createObjectBuilder; import static org.codehaus.groovy.runtime.InvokerHelper.asList; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.hasSize; diff --git a/listing-query/pom.xml b/listing-query/pom.xml index 291216735..547fd0c76 100644 --- a/listing-query/pom.xml +++ b/listing-query/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.listing listing-parent - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-service/pom.xml b/listing-service/pom.xml index 46ec34607..a149d9f16 100644 --- a/listing-service/pom.xml +++ b/listing-service/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.listing listing-parent - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-viewstore/listing-viewstore-liquibase/pom.xml b/listing-viewstore/listing-viewstore-liquibase/pom.xml index e096be1f8..0d15caa98 100644 --- a/listing-viewstore/listing-viewstore-liquibase/pom.xml +++ b/listing-viewstore/listing-viewstore-liquibase/pom.xml @@ -3,7 +3,7 @@ listing-viewstore uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-viewstore/listing-viewstore-persistence/pom.xml b/listing-viewstore/listing-viewstore-persistence/pom.xml index f09d66348..7bc495336 100644 --- a/listing-viewstore/listing-viewstore-persistence/pom.xml +++ b/listing-viewstore/listing-viewstore-persistence/pom.xml @@ -3,7 +3,7 @@ uk.gov.moj.cpp.listing listing-viewstore - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/listing-viewstore/pom.xml b/listing-viewstore/pom.xml index 76f6bb81c..1fdb5cf29 100644 --- a/listing-viewstore/pom.xml +++ b/listing-viewstore/pom.xml @@ -3,7 +3,7 @@ listing-parent uk.gov.moj.cpp.listing - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT 4.0.0 diff --git a/pom.xml b/pom.xml index ca744cc51..9824fffe1 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ uk.gov.moj.cpp.listing listing-parent - 17.103.201-cct-1981-SNAPSHOT + 17.104.4-cct-1981-SNAPSHOT pom Listing Context Microservice Parent