From 4f09a0db591deacb90014714c27fd0483775852c Mon Sep 17 00:00:00 2001 From: Jamie Briggs Date: Wed, 15 Jan 2025 16:36:22 +0000 Subject: [PATCH 1/5] CCMSPUI-458 Updated build.gradle to include up to date versions of SOA and EBS with EBS endpoint migrated Signed-off-by: Jamie Briggs --- build.gradle | 4 +- .../laa/ccms/caab/client/EbsApiClient.java | 46 +++++++++++++ .../laa/ccms/caab/client/SoaApiClient.java | 57 ---------------- .../ccms/caab/mapper/ApplicationMapper.java | 6 +- .../ccms/caab/service/ApplicationService.java | 4 +- .../ccms/caab/client/SoaApiClientTest.java | 67 ------------------- .../caab/mapper/ApplicationMapperTest.java | 9 +-- .../caab/service/ApplicationServiceTest.java | 30 ++++----- .../gov/laa/ccms/caab/util/EbsModelUtils.java | 19 ++++++ .../ccms/caab/util/PaginationUtilTest.java | 2 +- .../gov/laa/ccms/caab/util/SoaModelUtils.java | 11 --- 11 files changed, 90 insertions(+), 165 deletions(-) diff --git a/build.gradle b/build.gradle index 5595254f..02cc29d0 100644 --- a/build.gradle +++ b/build.gradle @@ -37,9 +37,9 @@ repositories { dependencies { - implementation 'uk.gov.laa.ccms.data:data-api:0.0.29' + implementation 'uk.gov.laa.ccms.data:data-api:0.0.30-bc6420d-SNAPSHOT' - implementation 'uk.gov.laa.ccms.soa.gateway:soa-gateway-api:0.0.46' + implementation 'uk.gov.laa.ccms.soa.gateway:soa-gateway-api:0.0.46-17d5bbf-SNAPSHOT' implementation 'uk.gov.laa.ccms.caab:caab-api:0.0.40' diff --git a/src/main/java/uk/gov/laa/ccms/caab/client/EbsApiClient.java b/src/main/java/uk/gov/laa/ccms/caab/client/EbsApiClient.java index f7317824..aed73e26 100644 --- a/src/main/java/uk/gov/laa/ccms/caab/client/EbsApiClient.java +++ b/src/main/java/uk/gov/laa/ccms/caab/client/EbsApiClient.java @@ -6,10 +6,12 @@ import org.springframework.util.MultiValueMap; import org.springframework.web.reactive.function.client.WebClient; import reactor.core.publisher.Mono; +import uk.gov.laa.ccms.caab.bean.CaseSearchCriteria; import uk.gov.laa.ccms.caab.bean.NotificationSearchCriteria; import uk.gov.laa.ccms.data.model.AmendmentTypeLookupDetail; import uk.gov.laa.ccms.data.model.AssessmentSummaryEntityLookupDetail; import uk.gov.laa.ccms.data.model.AwardTypeLookupDetail; +import uk.gov.laa.ccms.data.model.CaseDetails; import uk.gov.laa.ccms.data.model.CaseReferenceSummary; import uk.gov.laa.ccms.data.model.CaseStatusLookupDetail; import uk.gov.laa.ccms.data.model.CategoryOfLawLookupDetail; @@ -825,5 +827,49 @@ private static MultiValueMap buildQueryParams( } + public Mono getCases(CaseSearchCriteria caseSearchCriteria, String loginId, + String userType, int page, Integer size) { + // TODO: Implement getCases + + /** + * final MultiValueMap queryParams = new LinkedMultiValueMap<>(); + * Optional.ofNullable(caseSearchCriteria.getCaseReference()) + * .ifPresent(caseReference -> queryParams.add( + * CASE_REFERENCE_NUMBER, caseReference)); + * Optional.ofNullable(caseSearchCriteria.getProviderCaseReference()) + * .ifPresent(providerCaseReference -> queryParams.add( + * "provider-case-reference", providerCaseReference)); + * Optional.ofNullable(caseSearchCriteria.getStatus()) + * .ifPresent(status -> queryParams.add( + * "case-status", status)); + * Optional.ofNullable(caseSearchCriteria.getFeeEarnerId()) + * .ifPresent(feeEarnerId -> queryParams.add( + * "fee-earner-id", String.valueOf(feeEarnerId))); + * Optional.ofNullable(caseSearchCriteria.getOfficeId()) + * .ifPresent(officeId -> queryParams.add( + * "office-id", String.valueOf(officeId))); + * Optional.ofNullable(caseSearchCriteria.getClientSurname()) + * .ifPresent(clientSurname -> queryParams.add( + * "client-surname", clientSurname)); + * Optional.ofNullable(page) + * .ifPresent(param -> queryParams.add("page", String.valueOf(param))); + * Optional.ofNullable(size) + * .ifPresent(param -> queryParams.add("size", String.valueOf(param))); + * + * return soaApiWebClient + * .get() + * .uri(builder -> builder.path("/cases") + * .queryParams(queryParams) + * .build()) + * .header(SOA_GATEWAY_USER_LOGIN_ID, loginId) + * .header(SOA_GATEWAY_USER_ROLE, userType) + * .retrieve() + * .bodyToMono(CaseDetails.class) + * .onErrorResume(e -> soaApiClientErrorHandler.handleApiRetrieveError( + * e, "Cases", queryParams)); + */ + + return Mono.empty(); + } } diff --git a/src/main/java/uk/gov/laa/ccms/caab/client/SoaApiClient.java b/src/main/java/uk/gov/laa/ccms/caab/client/SoaApiClient.java index 83937bd2..743aa231 100644 --- a/src/main/java/uk/gov/laa/ccms/caab/client/SoaApiClient.java +++ b/src/main/java/uk/gov/laa/ccms/caab/client/SoaApiClient.java @@ -13,11 +13,9 @@ import org.springframework.util.MultiValueMap; import org.springframework.web.reactive.function.client.WebClient; import reactor.core.publisher.Mono; -import uk.gov.laa.ccms.caab.bean.CaseSearchCriteria; import uk.gov.laa.ccms.caab.bean.ClientSearchCriteria; import uk.gov.laa.ccms.caab.bean.opponent.OrganisationSearchCriteria; import uk.gov.laa.ccms.soa.gateway.model.CaseDetail; -import uk.gov.laa.ccms.soa.gateway.model.CaseDetails; import uk.gov.laa.ccms.soa.gateway.model.CaseTransactionResponse; import uk.gov.laa.ccms.soa.gateway.model.ClientDetail; import uk.gov.laa.ccms.soa.gateway.model.ClientDetailDetails; @@ -240,61 +238,6 @@ public Mono putClient( e, "Client", "reference number", clientReferenceNumber)); } - /** - * Searches and retrieves case details based on provided search criteria. - * - * @param caseSearchCriteria The search criteria to use when fetching cases. - * @param loginId The login identifier for the user. - * @param userType Type of the user (e.g., admin, user). - * @param page The page number for pagination. - * @param size The size or number of records per page. - * @return A Mono wrapping the CaseDetails. - */ - public Mono getCases( - final CaseSearchCriteria caseSearchCriteria, - final String loginId, - final String userType, - final Integer page, - final Integer size) { - - final MultiValueMap queryParams = new LinkedMultiValueMap<>(); - Optional.ofNullable(caseSearchCriteria.getCaseReference()) - .ifPresent(caseReference -> queryParams.add( - CASE_REFERENCE_NUMBER, caseReference)); - Optional.ofNullable(caseSearchCriteria.getProviderCaseReference()) - .ifPresent(providerCaseReference -> queryParams.add( - "provider-case-reference", providerCaseReference)); - Optional.ofNullable(caseSearchCriteria.getStatus()) - .ifPresent(status -> queryParams.add( - "case-status", status)); - Optional.ofNullable(caseSearchCriteria.getFeeEarnerId()) - .ifPresent(feeEarnerId -> queryParams.add( - "fee-earner-id", String.valueOf(feeEarnerId))); - Optional.ofNullable(caseSearchCriteria.getOfficeId()) - .ifPresent(officeId -> queryParams.add( - "office-id", String.valueOf(officeId))); - Optional.ofNullable(caseSearchCriteria.getClientSurname()) - .ifPresent(clientSurname -> queryParams.add( - "client-surname", clientSurname)); - Optional.ofNullable(page) - .ifPresent(param -> queryParams.add("page", String.valueOf(param))); - Optional.ofNullable(size) - .ifPresent(param -> queryParams.add("size", String.valueOf(param))); - - return soaApiWebClient - .get() - .uri(builder -> builder.path("/cases") - .queryParams(queryParams) - .build()) - .header(SOA_GATEWAY_USER_LOGIN_ID, loginId) - .header(SOA_GATEWAY_USER_ROLE, userType) - .retrieve() - .bodyToMono(CaseDetails.class) - .onErrorResume(e -> soaApiClientErrorHandler.handleApiRetrieveError( - e, "Cases", queryParams)); - - } - /** * Retrieves the full detail of a single case based on the provided case reference. * diff --git a/src/main/java/uk/gov/laa/ccms/caab/mapper/ApplicationMapper.java b/src/main/java/uk/gov/laa/ccms/caab/mapper/ApplicationMapper.java index 0b1ec657..a87f6353 100644 --- a/src/main/java/uk/gov/laa/ccms/caab/mapper/ApplicationMapper.java +++ b/src/main/java/uk/gov/laa/ccms/caab/mapper/ApplicationMapper.java @@ -69,6 +69,7 @@ import uk.gov.laa.ccms.caab.model.ScopeLimitationDetail; import uk.gov.laa.ccms.caab.model.StringDisplayValue; import uk.gov.laa.ccms.caab.model.TimeRecoveryDetail; +import uk.gov.laa.ccms.data.model.CaseSummary; import uk.gov.laa.ccms.data.model.CommonLookupValueDetail; import uk.gov.laa.ccms.data.model.ContactDetail; import uk.gov.laa.ccms.data.model.OfficeDetail; @@ -82,7 +83,6 @@ import uk.gov.laa.ccms.soa.gateway.model.CaseDetail; import uk.gov.laa.ccms.soa.gateway.model.CaseDoc; import uk.gov.laa.ccms.soa.gateway.model.CaseStatus; -import uk.gov.laa.ccms.soa.gateway.model.CaseSummary; import uk.gov.laa.ccms.soa.gateway.model.CategoryOfLaw; import uk.gov.laa.ccms.soa.gateway.model.CostLimitation; import uk.gov.laa.ccms.soa.gateway.model.LinkedCase; @@ -113,7 +113,7 @@ public interface ApplicationMapper { @Mapping(target = "id", ignore = true) @Mapping(target = "status", source = "caseStatusDisplay") @Mapping(target = "providerDetails", source = ".") - BaseApplicationDetail toBaseApplication(CaseSummary soaCaseSummary); + BaseApplicationDetail toBaseApplication(CaseSummary ebsCaseSummary); @Mapping(target = "providerCaseReference", source = "providerCaseReferenceNumber") @Mapping(target = "feeEarner.displayValue", source = "feeEarnerName") @@ -121,7 +121,7 @@ public interface ApplicationMapper { @Mapping(target = "office", ignore = true) @Mapping(target = "supervisor", ignore = true) @Mapping(target = "providerContact", ignore = true) - ApplicationProviderDetails toApplicationProviderDetails(CaseSummary soaCaseSummary); + ApplicationProviderDetails toApplicationProviderDetails(CaseSummary ebsCaseSummary); @Mapping(target = ".", source = "soaCaseDetail") @Mapping(target = "certificate", source = "certificate") diff --git a/src/main/java/uk/gov/laa/ccms/caab/service/ApplicationService.java b/src/main/java/uk/gov/laa/ccms/caab/service/ApplicationService.java index 62ab85ab..b702b952 100644 --- a/src/main/java/uk/gov/laa/ccms/caab/service/ApplicationService.java +++ b/src/main/java/uk/gov/laa/ccms/caab/service/ApplicationService.java @@ -100,6 +100,7 @@ import uk.gov.laa.ccms.data.model.AmendmentTypeLookupDetail; import uk.gov.laa.ccms.data.model.AwardTypeLookupDetail; import uk.gov.laa.ccms.data.model.AwardTypeLookupValueDetail; +import uk.gov.laa.ccms.data.model.CaseDetails; import uk.gov.laa.ccms.data.model.CaseReferenceSummary; import uk.gov.laa.ccms.data.model.CaseStatusLookupDetail; import uk.gov.laa.ccms.data.model.CaseStatusLookupValueDetail; @@ -121,7 +122,6 @@ import uk.gov.laa.ccms.soa.gateway.model.AssessmentResult; import uk.gov.laa.ccms.soa.gateway.model.Award; import uk.gov.laa.ccms.soa.gateway.model.CaseDetail; -import uk.gov.laa.ccms.soa.gateway.model.CaseDetails; import uk.gov.laa.ccms.soa.gateway.model.CaseTransactionResponse; import uk.gov.laa.ccms.soa.gateway.model.CategoryOfLaw; import uk.gov.laa.ccms.soa.gateway.model.ClientDetail; @@ -197,7 +197,7 @@ public List getCases( // Set page and size to min and max respectively. Because we are combining 2 searches // we will have to return all records for pagination by the caller. final CaseDetails caseDetails = Optional.ofNullable( - soaApiClient.getCases( + ebsApiClient.getCases( caseSearchCriteria, user.getLoginId(), user.getUserType(), diff --git a/src/test/java/uk/gov/laa/ccms/caab/client/SoaApiClientTest.java b/src/test/java/uk/gov/laa/ccms/caab/client/SoaApiClientTest.java index 43ffbf9c..bd08d014 100644 --- a/src/test/java/uk/gov/laa/ccms/caab/client/SoaApiClientTest.java +++ b/src/test/java/uk/gov/laa/ccms/caab/client/SoaApiClientTest.java @@ -22,11 +22,9 @@ import org.springframework.web.util.UriComponentsBuilder; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; -import uk.gov.laa.ccms.caab.bean.CaseSearchCriteria; import uk.gov.laa.ccms.caab.bean.ClientSearchCriteria; import uk.gov.laa.ccms.caab.bean.opponent.OrganisationSearchCriteria; import uk.gov.laa.ccms.soa.gateway.model.CaseDetail; -import uk.gov.laa.ccms.soa.gateway.model.CaseDetails; import uk.gov.laa.ccms.soa.gateway.model.ClientDetail; import uk.gov.laa.ccms.soa.gateway.model.ClientDetailDetails; import uk.gov.laa.ccms.soa.gateway.model.ClientDetails; @@ -184,71 +182,6 @@ void getClients_ReturnsClientDetails_Successful() { assertEquals(expectedUri, actualUri.toString()); } - @Test - void getCases_ReturnsCaseDetails_Successful() { - - CaseSearchCriteria caseSearchCriteria = new CaseSearchCriteria(); - caseSearchCriteria.setCaseReference("123"); - caseSearchCriteria.setProviderCaseReference("456"); - caseSearchCriteria.setStatus("appl"); - caseSearchCriteria.setFeeEarnerId(789); - caseSearchCriteria.setOfficeId(999); - caseSearchCriteria.setClientSurname("asurname"); - String loginId = "user1"; - String userType = "userType"; - int page = 0; - int size = 10; - - String expectedUri = String.format("/cases?case-reference-number=%s&" + - "provider-case-reference=%s&" + - "case-status=%s&" + - "fee-earner-id=%s&" + - "office-id=%s&" + - "client-surname=%s&" + - "page=%s&" + - "size=%s", - caseSearchCriteria.getCaseReference(), - caseSearchCriteria.getProviderCaseReference(), - caseSearchCriteria.getStatus(), - caseSearchCriteria.getFeeEarnerId(), - caseSearchCriteria.getOfficeId(), - caseSearchCriteria.getClientSurname(), - page, - size); - - CaseDetails mockCaseDetails = new CaseDetails(); - - ArgumentCaptor> uriCaptor = ArgumentCaptor.forClass(Function.class); - - when(soaApiWebClientMock.get()).thenReturn(requestHeadersUriMock); - when(requestHeadersUriMock.uri(uriCaptor.capture())).thenReturn(requestHeadersMock); - when(requestHeadersMock.header("SoaGateway-User-Login-Id", loginId)).thenReturn( - requestHeadersMock); - when(requestHeadersMock.header("SoaGateway-User-Role", userType)).thenReturn( - requestHeadersMock); - when(requestHeadersMock.retrieve()).thenReturn(responseMock); - when(responseMock.bodyToMono(CaseDetails.class)).thenReturn(Mono.just(mockCaseDetails)); - - Mono caseDetailsMono = - soaApiClient.getCases(caseSearchCriteria, loginId, userType, page, size); - - StepVerifier.create(caseDetailsMono) - .expectNextMatches(caseDetails -> caseDetails == mockCaseDetails) - .verifyComplete(); - - Function uriFunction = uriCaptor.getValue(); - URI actualUri = uriFunction.apply(UriComponentsBuilder.newInstance()); - - verify(soaApiWebClientMock).get(); - verify(requestHeadersUriMock).uri(uriCaptor.capture()); - verify(requestHeadersMock).header("SoaGateway-User-Login-Id", loginId); - verify(requestHeadersMock).header("SoaGateway-User-Role", userType); - verify(requestHeadersMock).retrieve(); - verify(responseMock).bodyToMono(CaseDetails.class); - - assertEquals(expectedUri, actualUri.toString()); - } - @Test void getCase_ReturnsCaseDetail_Successful() { String caseReferenceNumber = "123"; diff --git a/src/test/java/uk/gov/laa/ccms/caab/mapper/ApplicationMapperTest.java b/src/test/java/uk/gov/laa/ccms/caab/mapper/ApplicationMapperTest.java index 6e83dcab..4c871856 100644 --- a/src/test/java/uk/gov/laa/ccms/caab/mapper/ApplicationMapperTest.java +++ b/src/test/java/uk/gov/laa/ccms/caab/mapper/ApplicationMapperTest.java @@ -16,10 +16,9 @@ import static uk.gov.laa.ccms.caab.constants.ApplicationConstants.OPPONENT_TYPE_INDIVIDUAL; import static uk.gov.laa.ccms.caab.constants.ApplicationConstants.OPPONENT_TYPE_ORGANISATION; import static uk.gov.laa.ccms.caab.constants.ApplicationConstants.STATUS_DRAFT; -import static uk.gov.laa.ccms.caab.util.AssessmentModelUtils.buildProceedingNameAttribute; import static uk.gov.laa.ccms.caab.util.CaabModelUtils.buildApplicationDetail; import static uk.gov.laa.ccms.caab.util.CaabModelUtils.buildBaseApplication; -import static uk.gov.laa.ccms.caab.util.CaabModelUtils.buildOpponent; +import static uk.gov.laa.ccms.caab.util.EbsModelUtils.buildCaseSummary; import static uk.gov.laa.ccms.caab.util.EbsModelUtils.buildPriorAuthorityDetail; import static uk.gov.laa.ccms.caab.util.EbsModelUtils.buildPriorAuthorityTypeDetail; import static uk.gov.laa.ccms.caab.util.EbsModelUtils.buildUserDetail; @@ -27,7 +26,6 @@ import static uk.gov.laa.ccms.caab.util.SoaModelUtils.buildAssessmentResult; import static uk.gov.laa.ccms.caab.util.SoaModelUtils.buildBaseClient; import static uk.gov.laa.ccms.caab.util.SoaModelUtils.buildCaseDetail; -import static uk.gov.laa.ccms.caab.util.SoaModelUtils.buildCaseSummary; import static uk.gov.laa.ccms.caab.util.SoaModelUtils.buildCostAward; import static uk.gov.laa.ccms.caab.util.SoaModelUtils.buildCostLimitation; import static uk.gov.laa.ccms.caab.util.SoaModelUtils.buildFinancialAward; @@ -45,8 +43,6 @@ import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; import java.util.Collections; import java.util.Date; import java.util.List; @@ -91,6 +87,7 @@ import uk.gov.laa.ccms.caab.model.ScopeLimitationDetail; import uk.gov.laa.ccms.caab.model.StringDisplayValue; import uk.gov.laa.ccms.caab.model.TimeRecoveryDetail; +import uk.gov.laa.ccms.data.model.CaseSummary; import uk.gov.laa.ccms.data.model.CommonLookupValueDetail; import uk.gov.laa.ccms.data.model.OfficeDetail; import uk.gov.laa.ccms.data.model.OutcomeResultLookupValueDetail; @@ -101,11 +98,9 @@ import uk.gov.laa.ccms.soa.gateway.model.BaseClient; import uk.gov.laa.ccms.soa.gateway.model.CaseDetail; import uk.gov.laa.ccms.soa.gateway.model.CaseDoc; -import uk.gov.laa.ccms.soa.gateway.model.CaseSummary; import uk.gov.laa.ccms.soa.gateway.model.CategoryOfLaw; import uk.gov.laa.ccms.soa.gateway.model.CostLimitation; import uk.gov.laa.ccms.soa.gateway.model.LinkedCase; -import uk.gov.laa.ccms.soa.gateway.model.NameDetail; import uk.gov.laa.ccms.soa.gateway.model.OpaAttribute; import uk.gov.laa.ccms.soa.gateway.model.OtherParty; import uk.gov.laa.ccms.soa.gateway.model.OtherPartyOrganisation; diff --git a/src/test/java/uk/gov/laa/ccms/caab/service/ApplicationServiceTest.java b/src/test/java/uk/gov/laa/ccms/caab/service/ApplicationServiceTest.java index 8094eba4..8ccdf9ce 100644 --- a/src/test/java/uk/gov/laa/ccms/caab/service/ApplicationServiceTest.java +++ b/src/test/java/uk/gov/laa/ccms/caab/service/ApplicationServiceTest.java @@ -124,9 +124,11 @@ import uk.gov.laa.ccms.data.model.AmendmentTypeLookupValueDetail; import uk.gov.laa.ccms.data.model.AwardTypeLookupDetail; import uk.gov.laa.ccms.data.model.AwardTypeLookupValueDetail; +import uk.gov.laa.ccms.data.model.CaseDetails; import uk.gov.laa.ccms.data.model.CaseReferenceSummary; import uk.gov.laa.ccms.data.model.CaseStatusLookupDetail; import uk.gov.laa.ccms.data.model.CaseStatusLookupValueDetail; +import uk.gov.laa.ccms.data.model.CaseSummary; import uk.gov.laa.ccms.data.model.CategoryOfLawLookupValueDetail; import uk.gov.laa.ccms.data.model.CommonLookupDetail; import uk.gov.laa.ccms.data.model.CommonLookupValueDetail; @@ -144,8 +146,6 @@ import uk.gov.laa.ccms.data.model.StageEndLookupValueDetail; import uk.gov.laa.ccms.data.model.UserDetail; import uk.gov.laa.ccms.soa.gateway.model.CaseDetail; -import uk.gov.laa.ccms.soa.gateway.model.CaseDetails; -import uk.gov.laa.ccms.soa.gateway.model.CaseSummary; import uk.gov.laa.ccms.soa.gateway.model.ContractDetails; import uk.gov.laa.ccms.soa.gateway.model.PriorAuthority; @@ -263,7 +263,7 @@ void getCases_DraftStatusQueriesSOAAndTDS() { .size(1) .addContentItem(new CaseSummary().caseReferenceNumber("2")); - final BaseApplicationDetail mockSoaApplication = new BaseApplicationDetail() + final BaseApplicationDetail mockEbsApplication = new BaseApplicationDetail() .caseReferenceNumber("2"); final ApplicationDetails mockTdsApplicationDetails = new ApplicationDetails() @@ -274,13 +274,13 @@ void getCases_DraftStatusQueriesSOAAndTDS() { // expected result, sorted by case reference final List expectedResult = List.of(mockTdsApplicationDetails.getContent().get(0), - mockSoaApplication); + mockEbsApplication); - when(soaApiClient.getCases( + when(ebsApiClient.getCases( caseSearchCriteria, userDetail.getLoginId(), userDetail.getUserType(), page, size)) .thenReturn(Mono.just(mockCaseDetails)); when(applicationMapper.toBaseApplication(mockCaseDetails.getContent().get(0))) - .thenReturn(mockSoaApplication); + .thenReturn(mockEbsApplication); when(caabApiClient.getApplications(caseSearchCriteria, userDetail.getProvider().getId(), page, size)).thenReturn(Mono.just(mockTdsApplicationDetails)); when(searchConstants.getMaxSearchResultsCases()).thenReturn(size); @@ -288,7 +288,7 @@ void getCases_DraftStatusQueriesSOAAndTDS() { final List result = applicationService.getCases(caseSearchCriteria, userDetail); - verify(soaApiClient).getCases(caseSearchCriteria, userDetail.getLoginId(), + verify(ebsApiClient).getCases(caseSearchCriteria, userDetail.getLoginId(), userDetail.getUserType(), page, size); verify(caabApiClient).getApplications(caseSearchCriteria, userDetail.getProvider().getId(), page, size); @@ -298,7 +298,7 @@ void getCases_DraftStatusQueriesSOAAndTDS() { } @Test - void getCases_RemovesDuplicates_RetainingSoaCase() { + void getCases_RemovesDuplicates_RetainingEbsCase() { final CaseSearchCriteria caseSearchCriteria = new CaseSearchCriteria(); caseSearchCriteria.setCaseReference("123"); caseSearchCriteria.setProviderCaseReference("456"); @@ -317,7 +317,7 @@ void getCases_RemovesDuplicates_RetainingSoaCase() { .caseReferenceNumber("1") .caseStatusDisplay("the soa one"); - final BaseApplicationDetail mockSoaApplication = new BaseApplicationDetail() + final BaseApplicationDetail mockEbsApplication = new BaseApplicationDetail() .caseReferenceNumber(soaCaseSummary.getCaseReferenceNumber()) .status(new StringDisplayValue().displayValue(soaCaseSummary.getCaseStatusDisplay())); @@ -336,12 +336,12 @@ void getCases_RemovesDuplicates_RetainingSoaCase() { .addContentItem(mockTdsApplication); // expected result, only the soa case retained - final List expectedResult = List.of(mockSoaApplication); + final List expectedResult = List.of(mockEbsApplication); - when(soaApiClient.getCases(caseSearchCriteria, userDetail.getLoginId(), + when(ebsApiClient.getCases(caseSearchCriteria, userDetail.getLoginId(), userDetail.getUserType(), page, size)).thenReturn(Mono.just(mockCaseDetails)); when(applicationMapper.toBaseApplication(mockCaseDetails.getContent().get(0))) - .thenReturn(mockSoaApplication); + .thenReturn(mockEbsApplication); when(caabApiClient.getApplications(caseSearchCriteria, userDetail.getProvider().getId(), page, size)) .thenReturn(Mono.just(mockTdsApplicationDetails)); @@ -350,7 +350,7 @@ void getCases_RemovesDuplicates_RetainingSoaCase() { final List result = applicationService.getCases(caseSearchCriteria, userDetail); - verify(soaApiClient).getCases(caseSearchCriteria, userDetail.getLoginId(), + verify(ebsApiClient).getCases(caseSearchCriteria, userDetail.getLoginId(), userDetail.getUserType(), page, size); verify(caabApiClient).getApplications(caseSearchCriteria, userDetail.getProvider().getId(), page, size); @@ -381,7 +381,7 @@ void getCases_TooManySoaResults_ThrowsException() { .addContentItem(new CaseSummary()) .addContentItem(new CaseSummary()); - when(soaApiClient.getCases(caseSearchCriteria, userDetail.getLoginId(), + when(ebsApiClient.getCases(caseSearchCriteria, userDetail.getLoginId(), userDetail.getUserType(), page, size)).thenReturn(Mono.just(mockCaseDetails)); when(searchConstants.getMaxSearchResultsCases()).thenReturn(size); @@ -416,7 +416,7 @@ void getCases_TooManyOverallResults_ThrowsException() { .size(1) .addContentItem(new BaseApplicationDetail().caseReferenceNumber("3")); - when(soaApiClient.getCases(caseSearchCriteria, + when(ebsApiClient.getCases(caseSearchCriteria, userDetail.getLoginId(), userDetail.getUserType(), page, size)) .thenReturn(Mono.just(mockCaseDetails)); when(applicationMapper.toBaseApplication(mockCaseDetails.getContent().get(0))) diff --git a/src/test/java/uk/gov/laa/ccms/caab/util/EbsModelUtils.java b/src/test/java/uk/gov/laa/ccms/caab/util/EbsModelUtils.java index eb17229c..1efdab0c 100644 --- a/src/test/java/uk/gov/laa/ccms/caab/util/EbsModelUtils.java +++ b/src/test/java/uk/gov/laa/ccms/caab/util/EbsModelUtils.java @@ -1,9 +1,11 @@ package uk.gov.laa.ccms.caab.util; import java.util.UUID; +import uk.gov.laa.ccms.data.model.BaseClient; import uk.gov.laa.ccms.data.model.BaseOffice; import uk.gov.laa.ccms.data.model.BaseProvider; import uk.gov.laa.ccms.data.model.CaseReferenceSummary; +import uk.gov.laa.ccms.data.model.CaseSummary; import uk.gov.laa.ccms.data.model.CategoryOfLawLookupValueDetail; import uk.gov.laa.ccms.data.model.ContactDetail; import uk.gov.laa.ccms.data.model.OfficeDetail; @@ -106,4 +108,21 @@ public static CaseReferenceSummary buildCaseReferenceSummary() { return new CaseReferenceSummary() .caseReferenceNumber(UUID.randomUUID().toString()); } + + public static CaseSummary buildCaseSummary() { + return new CaseSummary() + .caseReferenceNumber("caseref") + .caseStatusDisplay("the status") + .categoryOfLaw("CAT") + .client(buildBaseClient()) + .feeEarnerName("feeearner") + .providerCaseReferenceNumber("prov"); + } + + public static BaseClient buildBaseClient() { + return new BaseClient() + .clientReferenceNumber("clientref") + .firstName("firstname") + .surname("surn"); + } } diff --git a/src/test/java/uk/gov/laa/ccms/caab/util/PaginationUtilTest.java b/src/test/java/uk/gov/laa/ccms/caab/util/PaginationUtilTest.java index 96e0ee10..f77a2586 100644 --- a/src/test/java/uk/gov/laa/ccms/caab/util/PaginationUtilTest.java +++ b/src/test/java/uk/gov/laa/ccms/caab/util/PaginationUtilTest.java @@ -12,8 +12,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import uk.gov.laa.ccms.caab.exception.CaabApplicationException; +import uk.gov.laa.ccms.data.model.CaseSummary; import uk.gov.laa.ccms.data.model.Notification; -import uk.gov.laa.ccms.soa.gateway.model.CaseSummary; class PaginationUtilTest { diff --git a/src/test/java/uk/gov/laa/ccms/caab/util/SoaModelUtils.java b/src/test/java/uk/gov/laa/ccms/caab/util/SoaModelUtils.java index 98d66b1b..aa527fcf 100644 --- a/src/test/java/uk/gov/laa/ccms/caab/util/SoaModelUtils.java +++ b/src/test/java/uk/gov/laa/ccms/caab/util/SoaModelUtils.java @@ -19,7 +19,6 @@ import uk.gov.laa.ccms.soa.gateway.model.CaseDetail; import uk.gov.laa.ccms.soa.gateway.model.CaseDoc; import uk.gov.laa.ccms.soa.gateway.model.CaseStatus; -import uk.gov.laa.ccms.soa.gateway.model.CaseSummary; import uk.gov.laa.ccms.soa.gateway.model.CategoryOfLaw; import uk.gov.laa.ccms.soa.gateway.model.ClientDetail; import uk.gov.laa.ccms.soa.gateway.model.ClientDetailDetails; @@ -590,16 +589,6 @@ public static ContractDetail createContractDetail(String cat, Boolean createNewM .authorisationType("AUTHTYPE1"); } - public static CaseSummary buildCaseSummary() { - return new CaseSummary() - .caseReferenceNumber("caseref") - .caseStatusDisplay("the status") - .categoryOfLaw("CAT") - .client(buildBaseClient()) - .feeEarnerName("feeearner") - .providerCaseReferenceNumber("prov"); - } - public static BaseContact buildBaseContact() { return new BaseContact() .emailAddress("emailaddr") From 931b8b0c03e58171a7f64d4175fd6f8a4f1b8189 Mon Sep 17 00:00:00 2001 From: Jamie Briggs Date: Thu, 16 Jan 2025 12:15:23 +0000 Subject: [PATCH 2/5] CCMSPUI-458 Implemented EBS get cases method. Signed-off-by: Jamie Briggs --- .../laa/ccms/caab/client/EbsApiClient.java | 215 +++++++++--------- .../ccms/caab/mapper/ApplicationMapper.java | 1 + .../ccms/caab/service/ApplicationService.java | 4 +- .../caab/service/ApplicationServiceTest.java | 18 +- 4 files changed, 115 insertions(+), 123 deletions(-) diff --git a/src/main/java/uk/gov/laa/ccms/caab/client/EbsApiClient.java b/src/main/java/uk/gov/laa/ccms/caab/client/EbsApiClient.java index aed73e26..44ef72c6 100644 --- a/src/main/java/uk/gov/laa/ccms/caab/client/EbsApiClient.java +++ b/src/main/java/uk/gov/laa/ccms/caab/client/EbsApiClient.java @@ -60,12 +60,12 @@ protected EbsApiClient(WebClient ebsApiWebClient, */ public Mono getUser(final String loginId) { return webClient - .get() - .uri("/users/{loginId}", loginId) - .retrieve() - .bodyToMono(UserDetail.class) - .onErrorResume(e -> ebsApiClientErrorHandler.handleApiRetrieveError( - e, "User", "login id", loginId)); + .get() + .uri("/users/{loginId}", loginId) + .retrieve() + .bodyToMono(UserDetail.class) + .onErrorResume(e -> ebsApiClientErrorHandler.handleApiRetrieveError( + e, "User", "login id", loginId)); } /** @@ -104,10 +104,10 @@ public Mono getProvider(final Integer providerId) { /** * Retrieves common lookup values based on the type, code, description and sort criteria. * - * @param type The type of the common lookup values. Can be null. - * @param code The code of the common lookup values. Can be null. + * @param type The type of the common lookup values. Can be null. + * @param code The code of the common lookup values. Can be null. * @param description The description of the common lookup values. Can be null. - * @param sort The sort criteria for the common lookup values. Can be null. + * @param sort The sort criteria for the common lookup values. Can be null. * @return A Mono containing the CommonLookupDetail or an error handler if an error occurs. */ public Mono getCommonValues(final String type, final String code, @@ -137,8 +137,8 @@ public Mono getCommonValues(final String type, final String /** * Retrieves common lookup values based on the type, code, and description. * - * @param type The type of the common lookup values. Can be null. - * @param code The code of the common lookup values. Can be null. + * @param type The type of the common lookup values. Can be null. + * @param code The code of the common lookup values. Can be null. * @param description The description for the common lookup values. Can be null. * @return A Mono containing the CommonLookupDetail or an error handler if an error occurs. */ @@ -190,12 +190,11 @@ public Mono getMatterTypes(final String categoryOfLaw) { } - /** * Retrieves the person to case relationships lookup values. * * @return A Mono containing the RelationshipToCaseLookupDetail or an error handler if an error - * occurs. + * occurs. */ public Mono getPersonRelationshipsToCaseValues() { return webClient @@ -209,13 +208,13 @@ public Mono getPersonRelationshipsToCaseValues() } /** - * Retrieves the organisation to case relationships lookup values, optionally - * filtered on code and description value. + * Retrieves the organisation to case relationships lookup values, optionally filtered on code and + * description value. * - * @param code - the relationship code. + * @param code - the relationship code. * @param description - the relationship description value. * @return A Mono containing the RelationshipToCaseLookupDetail or an error handler if an error - * occurs. + * occurs. */ public Mono getOrganisationToCaseRelationshipValues( final String code, @@ -251,12 +250,12 @@ public Mono getCaseStatusValues( .ifPresent(param -> queryParams.add("copy-allowed", String.valueOf(param))); return webClient - .get() - .uri(builder -> builder.path("/lookup/case-status") - .queryParams(queryParams) - .build()) - .retrieve() - .bodyToMono(CaseStatusLookupDetail.class) + .get() + .uri(builder -> builder.path("/lookup/case-status") + .queryParams(queryParams) + .build()) + .retrieve() + .bodyToMono(CaseStatusLookupDetail.class) .onErrorResume(e -> ebsApiClientErrorHandler.handleApiRetrieveError( e, "Case status", queryParams)); } @@ -273,14 +272,14 @@ public Mono getAmendmentTypes( Optional.ofNullable(applicationType) .ifPresent(param -> queryParams.add("application-type", param)); return webClient - .get() - .uri(builder -> builder.path("/lookup/amendment-types") - .queryParams(queryParams) - .build()) - .retrieve() - .bodyToMono(AmendmentTypeLookupDetail.class) - .onErrorResume(e -> ebsApiClientErrorHandler.handleApiRetrieveError( - e, "Amendment types", queryParams)); + .get() + .uri(builder -> builder.path("/lookup/amendment-types") + .queryParams(queryParams) + .build()) + .retrieve() + .bodyToMono(AmendmentTypeLookupDetail.class) + .onErrorResume(e -> ebsApiClientErrorHandler.handleApiRetrieveError( + e, "Amendment types", queryParams)); } /** @@ -291,20 +290,20 @@ public Mono getAmendmentTypes( public Mono getCountries() { final MultiValueMap queryParams = createDefaultQueryParams(); return webClient - .get() - .uri(builder -> builder.path("/lookup/countries") - .queryParams(queryParams) - .build()) - .retrieve() - .bodyToMono(CommonLookupDetail.class) - .onErrorResume(e -> ebsApiClientErrorHandler.handleApiRetrieveError( - e, "Countries", queryParams)); + .get() + .uri(builder -> builder.path("/lookup/countries") + .queryParams(queryParams) + .build()) + .retrieve() + .bodyToMono(CommonLookupDetail.class) + .onErrorResume(e -> ebsApiClientErrorHandler.handleApiRetrieveError( + e, "Countries", queryParams)); } /** * Retrieves prior authority types by code and valueRequired flag. * - * @param code - the prior authority type code + * @param code - the prior authority type code * @param valueRequired - the value required flag * @return A Mono containing the PriorAuthorityTypeDetails or an error handler if an error occurs. */ @@ -405,7 +404,7 @@ public Mono getProceedings( * Retrieves Client involvement types. * * @return A Mono containing the ClientInvolvementTypeLookupDetail or an error handler if an error - * occurs. + * occurs. */ public Mono getClientInvolvementTypes( final String proceedingCode) { @@ -427,7 +426,7 @@ public Mono getClientInvolvementTypes( * Retrieves Proceeding level of service types. * * @return A Mono containing the LevelOfServiceLookupDetail or an error handler if an error - * occurs. + * occurs. */ public Mono getLevelOfServiceTypes( final String proceedingCode, @@ -507,11 +506,11 @@ public Mono getScopeLimitations( } /** - * Retrieves outcome result lookup detail based on the provided proceedingCode and - * outcomeResult values. + * Retrieves outcome result lookup detail based on the provided proceedingCode and outcomeResult + * values. * * @param proceedingCode - the proceeding code. - * @param outcomeResult - the outcome result value. + * @param outcomeResult - the outcome result value. * @return A Mono containing the ProceedingDetail or an error handler if an error occurs. */ public Mono getOutcomeResults( @@ -536,11 +535,10 @@ public Mono getOutcomeResults( } /** - * Retrieves stage end lookup detail based on the provided proceedingCode and - * stageEnd values. + * Retrieves stage end lookup detail based on the provided proceedingCode and stageEnd values. * * @param proceedingCode - the proceeding code. - * @param stageEnd - the stage end value. + * @param stageEnd - the stage end value. * @return A Mono containing the StageEndLookupDetail or an error handler if an error occurs. */ public Mono getStageEnds( @@ -565,10 +563,9 @@ public Mono getStageEnds( } /** - * Retrieves award type lookup detail based on the provided code and - * award type values. + * Retrieves award type lookup detail based on the provided code and award type values. * - * @param code - the award type code. + * @param code - the award type code. * @param awardType - the award type value. * @return A Mono containing the AwardTypeLookupDetail or an error handler if an error occurs. */ @@ -592,12 +589,12 @@ public Mono getAwardTypes( } /** - * Retrieves category of law lookup detail based on the provided code, - * matter type description, and copy cost limit values. + * Retrieves category of law lookup detail based on the provided code, matter type description, + * and copy cost limit values. * - * @param code - the category of law code. + * @param code - the category of law code. * @param matterTypeDescription - the matter type description value. - * @param copyCostLimit - the copy cost limit flag. + * @param copyCostLimit - the copy cost limit flag. * @return A Mono containing the CategoryOfLawLookupDetail or an error handler if an error occurs. */ public Mono getCategoriesOfLaw( @@ -625,10 +622,10 @@ public Mono getCategoriesOfLaw( } /** - * Retrieves person to case relationship lookup detail based on the provided code - * and description values. + * Retrieves person to case relationship lookup detail based on the provided code and description + * values. * - * @param code - the relationship code. + * @param code - the relationship code. * @param description - the relationship description value. * @return A Mono containing RelationshipToCaseLookupDetail or error handler if an error occurs. */ @@ -652,8 +649,7 @@ public Mono getPersonToCaseRelationships( } /** - * Retrieves evidence document type lookup detail based on the provided type - * and code values. + * Retrieves evidence document type lookup detail based on the provided type and code values. * * @param type - the subset of evidence document types to retrieve. * @param code - the evidence document type code. @@ -705,10 +701,10 @@ public Mono getAssessmentSummaryAttributes( /** - * Retrieves declaration details based on the provided type and bill type. - * Constructs a query with the given parameters and sends a GET request to the API. + * Retrieves declaration details based on the provided type and bill type. Constructs a query with + * the given parameters and sends a GET request to the API. * - * @param type the type of declaration to retrieve + * @param type the type of declaration to retrieve * @param billType the bill type to filter the declarations, may be null * @return a Mono emitting the {@link DeclarationLookupDetail} or handling errors */ @@ -733,10 +729,10 @@ public Mono getDeclarations( } /** - * Retrieves declaration details based on the provided type and bill type. - * Constructs a query with the given parameters and sends a GET request to the API. + * Retrieves declaration details based on the provided type and bill type. Constructs a query with + * the given parameters and sends a GET request to the API. * - * @param type the type of provider requests to retrieve + * @param type the type of provider requests to retrieve * @param isCaseRelated the case related filter, may be null to retrieve all * @return a Mono emitting the {@link ProviderRequestTypeLookupDetail} or handling errors */ @@ -807,8 +803,34 @@ public Mono getNotifications( e, "Notifications", queryParams)); } + /** + * Retrieves case details based on the specified search criteria, provider ID, + * pagination parameters, and returns the results as a Mono of CaseDetails. + * + * @param caseSearchCriteria the criteria used to filter the cases + * @param providerId the ID of the provider to retrieve cases for + * @param page the page number to retrieve + * @param size the number of items per page; can be null to use default + * @return a Mono containing the retrieved case details + */ + public Mono getCases(final CaseSearchCriteria caseSearchCriteria, + final int providerId, final int page, final Integer size) { + final MultiValueMap queryParams = + buildQueryParams(caseSearchCriteria, providerId, page, size); + + return webClient + .get() + .uri(builder -> builder.path("/cases") + .queryParams(queryParams) + .build()) + .retrieve() + .bodyToMono(CaseDetails.class) + .onErrorResume(e -> ebsApiClientErrorHandler.handleApiRetrieveError( + e, "Cases", queryParams)); + } + private static MultiValueMap buildQueryParams( - NotificationSearchCriteria criteria, Integer page, Integer pageSize) { + final NotificationSearchCriteria criteria, final Integer page, final Integer pageSize) { final MultiValueMap queryParams = createDefaultQueryParams(); addQueryParam(queryParams, "case-reference-number", criteria.getCaseReference()); @@ -826,50 +848,23 @@ private static MultiValueMap buildQueryParams( return queryParams; } + private static MultiValueMap buildQueryParams( + final CaseSearchCriteria criteria, final int providerId, final Integer page, + final Integer pageSize) { + final MultiValueMap queryParams = createDefaultQueryParams(); - public Mono getCases(CaseSearchCriteria caseSearchCriteria, String loginId, - String userType, int page, Integer size) { - // TODO: Implement getCases - - /** - * final MultiValueMap queryParams = new LinkedMultiValueMap<>(); - * Optional.ofNullable(caseSearchCriteria.getCaseReference()) - * .ifPresent(caseReference -> queryParams.add( - * CASE_REFERENCE_NUMBER, caseReference)); - * Optional.ofNullable(caseSearchCriteria.getProviderCaseReference()) - * .ifPresent(providerCaseReference -> queryParams.add( - * "provider-case-reference", providerCaseReference)); - * Optional.ofNullable(caseSearchCriteria.getStatus()) - * .ifPresent(status -> queryParams.add( - * "case-status", status)); - * Optional.ofNullable(caseSearchCriteria.getFeeEarnerId()) - * .ifPresent(feeEarnerId -> queryParams.add( - * "fee-earner-id", String.valueOf(feeEarnerId))); - * Optional.ofNullable(caseSearchCriteria.getOfficeId()) - * .ifPresent(officeId -> queryParams.add( - * "office-id", String.valueOf(officeId))); - * Optional.ofNullable(caseSearchCriteria.getClientSurname()) - * .ifPresent(clientSurname -> queryParams.add( - * "client-surname", clientSurname)); - * Optional.ofNullable(page) - * .ifPresent(param -> queryParams.add("page", String.valueOf(param))); - * Optional.ofNullable(size) - * .ifPresent(param -> queryParams.add("size", String.valueOf(param))); - * - * return soaApiWebClient - * .get() - * .uri(builder -> builder.path("/cases") - * .queryParams(queryParams) - * .build()) - * .header(SOA_GATEWAY_USER_LOGIN_ID, loginId) - * .header(SOA_GATEWAY_USER_ROLE, userType) - * .retrieve() - * .bodyToMono(CaseDetails.class) - * .onErrorResume(e -> soaApiClientErrorHandler.handleApiRetrieveError( - * e, "Cases", queryParams)); - */ - - return Mono.empty(); + addQueryParam(queryParams, "provider-id", providerId); + addQueryParam(queryParams, "client-surname", criteria.getClientSurname()); + addQueryParam(queryParams, "case-reference-number", criteria.getCaseReference()); + addQueryParam(queryParams, "provider-case-reference", criteria.getProviderCaseReference()); + addQueryParam(queryParams, "case-status", criteria.getStatus()); + addQueryParam(queryParams, "fee-earner-id", criteria.getFeeEarnerId()); + addQueryParam(queryParams, "office-id", criteria.getOfficeId()); + addQueryParam(queryParams, "page", page); + addQueryParam(queryParams, "size", pageSize); + return queryParams; } + + } diff --git a/src/main/java/uk/gov/laa/ccms/caab/mapper/ApplicationMapper.java b/src/main/java/uk/gov/laa/ccms/caab/mapper/ApplicationMapper.java index a87f6353..bd6e449c 100644 --- a/src/main/java/uk/gov/laa/ccms/caab/mapper/ApplicationMapper.java +++ b/src/main/java/uk/gov/laa/ccms/caab/mapper/ApplicationMapper.java @@ -113,6 +113,7 @@ public interface ApplicationMapper { @Mapping(target = "id", ignore = true) @Mapping(target = "status", source = "caseStatusDisplay") @Mapping(target = "providerDetails", source = ".") + @Mapping(target = "client.reference", source = "client.clientReferenceNumber") BaseApplicationDetail toBaseApplication(CaseSummary ebsCaseSummary); @Mapping(target = "providerCaseReference", source = "providerCaseReferenceNumber") diff --git a/src/main/java/uk/gov/laa/ccms/caab/service/ApplicationService.java b/src/main/java/uk/gov/laa/ccms/caab/service/ApplicationService.java index b702b952..3c0f6050 100644 --- a/src/main/java/uk/gov/laa/ccms/caab/service/ApplicationService.java +++ b/src/main/java/uk/gov/laa/ccms/caab/service/ApplicationService.java @@ -198,9 +198,7 @@ public List getCases( // we will have to return all records for pagination by the caller. final CaseDetails caseDetails = Optional.ofNullable( ebsApiClient.getCases( - caseSearchCriteria, - user.getLoginId(), - user.getUserType(), + caseSearchCriteria, user.getProvider().getId(), 0, searchConstants.getMaxSearchResultsCases()).block()) .orElseThrow(() -> new CaabApplicationException("Failed to retrieve SOA Cases")); diff --git a/src/test/java/uk/gov/laa/ccms/caab/service/ApplicationServiceTest.java b/src/test/java/uk/gov/laa/ccms/caab/service/ApplicationServiceTest.java index 8ccdf9ce..a58f37e6 100644 --- a/src/test/java/uk/gov/laa/ccms/caab/service/ApplicationServiceTest.java +++ b/src/test/java/uk/gov/laa/ccms/caab/service/ApplicationServiceTest.java @@ -277,7 +277,7 @@ void getCases_DraftStatusQueriesSOAAndTDS() { mockEbsApplication); when(ebsApiClient.getCases( - caseSearchCriteria, userDetail.getLoginId(), userDetail.getUserType(), page, size)) + caseSearchCriteria, userDetail.getProvider().getId(), page, size)) .thenReturn(Mono.just(mockCaseDetails)); when(applicationMapper.toBaseApplication(mockCaseDetails.getContent().get(0))) .thenReturn(mockEbsApplication); @@ -288,8 +288,7 @@ void getCases_DraftStatusQueriesSOAAndTDS() { final List result = applicationService.getCases(caseSearchCriteria, userDetail); - verify(ebsApiClient).getCases(caseSearchCriteria, userDetail.getLoginId(), - userDetail.getUserType(), page, size); + verify(ebsApiClient).getCases(caseSearchCriteria, userDetail.getProvider().getId(), page, size); verify(caabApiClient).getApplications(caseSearchCriteria, userDetail.getProvider().getId(), page, size); @@ -338,8 +337,8 @@ void getCases_RemovesDuplicates_RetainingEbsCase() { // expected result, only the soa case retained final List expectedResult = List.of(mockEbsApplication); - when(ebsApiClient.getCases(caseSearchCriteria, userDetail.getLoginId(), - userDetail.getUserType(), page, size)).thenReturn(Mono.just(mockCaseDetails)); + when(ebsApiClient.getCases(caseSearchCriteria, userDetail.getProvider().getId(), + page, size)).thenReturn(Mono.just(mockCaseDetails)); when(applicationMapper.toBaseApplication(mockCaseDetails.getContent().get(0))) .thenReturn(mockEbsApplication); when(caabApiClient.getApplications(caseSearchCriteria, @@ -350,8 +349,7 @@ void getCases_RemovesDuplicates_RetainingEbsCase() { final List result = applicationService.getCases(caseSearchCriteria, userDetail); - verify(ebsApiClient).getCases(caseSearchCriteria, userDetail.getLoginId(), - userDetail.getUserType(), page, size); + verify(ebsApiClient).getCases(caseSearchCriteria, userDetail.getProvider().getId(), page, size); verify(caabApiClient).getApplications(caseSearchCriteria, userDetail.getProvider().getId(), page, size); @@ -381,8 +379,8 @@ void getCases_TooManySoaResults_ThrowsException() { .addContentItem(new CaseSummary()) .addContentItem(new CaseSummary()); - when(ebsApiClient.getCases(caseSearchCriteria, userDetail.getLoginId(), - userDetail.getUserType(), page, size)).thenReturn(Mono.just(mockCaseDetails)); + when(ebsApiClient.getCases(caseSearchCriteria, userDetail.getProvider().getId(), + page, size)).thenReturn(Mono.just(mockCaseDetails)); when(searchConstants.getMaxSearchResultsCases()).thenReturn(size); assertThrows(TooManyResultsException.class, () -> @@ -417,7 +415,7 @@ void getCases_TooManyOverallResults_ThrowsException() { .addContentItem(new BaseApplicationDetail().caseReferenceNumber("3")); when(ebsApiClient.getCases(caseSearchCriteria, - userDetail.getLoginId(), userDetail.getUserType(), page, size)) + userDetail.getProvider().getId(), page, size)) .thenReturn(Mono.just(mockCaseDetails)); when(applicationMapper.toBaseApplication(mockCaseDetails.getContent().get(0))) .thenReturn(new BaseApplicationDetail() From 87df14ae2c8e6bd0fcb763e7a8e8b9b9480a2d6e Mon Sep 17 00:00:00 2001 From: Jamie Briggs Date: Thu, 16 Jan 2025 12:26:22 +0000 Subject: [PATCH 3/5] CCMSPUI-458 Added test case to EbsApiClientIntegrationTest for search cases Signed-off-by: Jamie Briggs --- .../client/EbsApiClientIntegrationTest.java | 82 +++++++++++++++++-- .../client/SoaApiClientIntegrationTest.java | 63 -------------- .../laa/ccms/caab/client/EbsApiClient.java | 2 +- 3 files changed, 77 insertions(+), 70 deletions(-) diff --git a/src/integrationTest/java/uk/gov/laa/ccms/caab/client/EbsApiClientIntegrationTest.java b/src/integrationTest/java/uk/gov/laa/ccms/caab/client/EbsApiClientIntegrationTest.java index 720c5351..07d59836 100644 --- a/src/integrationTest/java/uk/gov/laa/ccms/caab/client/EbsApiClientIntegrationTest.java +++ b/src/integrationTest/java/uk/gov/laa/ccms/caab/client/EbsApiClientIntegrationTest.java @@ -24,15 +24,19 @@ import reactor.core.publisher.Mono; import reactor.test.StepVerifier; import uk.gov.laa.ccms.caab.AbstractIntegrationTest; +import uk.gov.laa.ccms.caab.bean.CaseSearchCriteria; import uk.gov.laa.ccms.caab.bean.NotificationSearchCriteria; import uk.gov.laa.ccms.data.model.AmendmentTypeLookupDetail; import uk.gov.laa.ccms.data.model.AmendmentTypeLookupValueDetail; +import uk.gov.laa.ccms.data.model.BaseClient; import uk.gov.laa.ccms.data.model.BaseOffice; import uk.gov.laa.ccms.data.model.BaseProvider; import uk.gov.laa.ccms.data.model.BaseUser; +import uk.gov.laa.ccms.data.model.CaseDetails; import uk.gov.laa.ccms.data.model.CaseReferenceSummary; import uk.gov.laa.ccms.data.model.CaseStatusLookupDetail; import uk.gov.laa.ccms.data.model.CaseStatusLookupValueDetail; +import uk.gov.laa.ccms.data.model.CaseSummary; import uk.gov.laa.ccms.data.model.CommonLookupDetail; import uk.gov.laa.ccms.data.model.CommonLookupValueDetail; import uk.gov.laa.ccms.data.model.ContactDetail; @@ -112,7 +116,8 @@ public void testGetCommonValues_returnData() throws Exception { .withQueryParam("sort", equalTo(sort)) .willReturn(okJson(commonValuesJson))); - final Mono commonValuesMono = ebsApiClient.getCommonValues(type, code, descr, sort); + final Mono commonValuesMono = ebsApiClient.getCommonValues(type, code, + descr, sort); final CommonLookupDetail commonValues = commonValuesMono.block(); @@ -121,7 +126,8 @@ public void testGetCommonValues_returnData() throws Exception { @Test public void testGetCaseStatusValues_returnData() throws Exception { - final String caseStatusValuesJson = objectMapper.writeValueAsString(buildCaseStatusLookupDetail()); + final String caseStatusValuesJson = objectMapper.writeValueAsString( + buildCaseStatusLookupDetail()); final Boolean copyAllowed = true; @@ -129,7 +135,8 @@ public void testGetCaseStatusValues_returnData() throws Exception { .withQueryParam("copy-allowed", equalTo(copyAllowed.toString())) .willReturn(okJson(caseStatusValuesJson))); - final Mono lookupDetailMono = ebsApiClient.getCaseStatusValues(copyAllowed); + final Mono lookupDetailMono = ebsApiClient.getCaseStatusValues( + copyAllowed); final CaseStatusLookupDetail response = lookupDetailMono.block(); @@ -191,7 +198,8 @@ void testGetUsers_returnsData() throws JsonProcessingException { @Test public void testGetUsers_notFound() { final Integer providerId = 123; - final String expectedMessage = "Failed to retrieve Users with parameters: size=1000, provider-id=123"; + final String expectedMessage = "Failed to retrieve Users with parameters: size=1000, " + + "provider-id=123"; wiremock.stubFor(get(String.format("/users?size=1000&provider-id=%s", providerId)) .willReturn(notFound())); final Mono userDetailsMono = ebsApiClient.getUsers(providerId); @@ -213,8 +221,9 @@ public void testGetUserNotificationSummary_returnData() throws Exception { wiremock.stubFor(get(String.format("/users/%s/notifications/summary", loginId)) .willReturn(okJson(notificationSummaryJson))); - final Mono userNotificationSummary = ebsApiClient.getUserNotificationSummary( - loginId); + final Mono userNotificationSummary = + ebsApiClient.getUserNotificationSummary( + loginId); final NotificationSummary userDetails = userNotificationSummary.block(); @@ -305,6 +314,44 @@ public void testPostAllocateCaseReference_handlesError() throws JsonProcessingEx ).verify(); } + @Test + public void testGetCases_returnData() throws Exception { + int page = 0; + int size = 20; + int providerId = 2000; + + CaseSearchCriteria searchCriteria = buildCaseSearchCriteria(); + CaseDetails caseDetails = buildCaseDetails(); + String caseDetailsJson = objectMapper.writeValueAsString(caseDetails); + + wiremock.stubFor(get(String.format("/cases?provider-id=%s&" + + "case-reference-number=%s&" + + "provider-case-reference=%s&" + + "case-status=%s&" + + "fee-earner-id=%s&" + + "office-id=%s&" + + "client-surname=%s&" + + "page=%s&" + + "size=%s", + providerId, + searchCriteria.getCaseReference(), + searchCriteria.getProviderCaseReference(), + searchCriteria.getStatus(), + searchCriteria.getFeeEarnerId(), + searchCriteria.getOfficeId(), + searchCriteria.getClientSurname(), + page, + size)) + .willReturn(okJson(caseDetailsJson))); + + CaseDetails response = + ebsApiClient.getCases(searchCriteria, providerId, page, size).block(); + + assertNotNull(response); + assertEquals(1, response.getContent().size()); + assertEquals(caseDetailsJson, objectMapper.writeValueAsString(response)); + } + // You may need to build the AmendmentTypeLookupDetail for the test private AmendmentTypeLookupDetail buildAmendmentTypeLookupDetail() { final AmendmentTypeLookupDetail detail = new AmendmentTypeLookupDetail(); @@ -391,4 +438,27 @@ private Notifications buildNotifications() { ); } + private CaseDetails buildCaseDetails() { + return new CaseDetails() + .addContentItem(new CaseSummary() + .caseReferenceNumber("caseref1") + .providerCaseReferenceNumber("provcaseref") + .caseStatusDisplay("app") + .client(new BaseClient().firstName("firstname") + .surname("thesurname")) + .feeEarnerName("feeEarner") + .categoryOfLaw("CAT1")); + } + + private CaseSearchCriteria buildCaseSearchCriteria() { + CaseSearchCriteria searchCriteria = new CaseSearchCriteria(); + searchCriteria.setCaseReference("123"); + searchCriteria.setProviderCaseReference("456"); + searchCriteria.setStatus("caseStat"); + searchCriteria.setFeeEarnerId(678); + searchCriteria.setOfficeId(345); + searchCriteria.setClientSurname("clientSurname"); + return searchCriteria; + } + } diff --git a/src/integrationTest/java/uk/gov/laa/ccms/caab/client/SoaApiClientIntegrationTest.java b/src/integrationTest/java/uk/gov/laa/ccms/caab/client/SoaApiClientIntegrationTest.java index da1cc8bf..c5599062 100644 --- a/src/integrationTest/java/uk/gov/laa/ccms/caab/client/SoaApiClientIntegrationTest.java +++ b/src/integrationTest/java/uk/gov/laa/ccms/caab/client/SoaApiClientIntegrationTest.java @@ -20,10 +20,6 @@ import org.springframework.test.context.DynamicPropertySource; import reactor.core.publisher.Mono; import uk.gov.laa.ccms.caab.AbstractIntegrationTest; -import uk.gov.laa.ccms.caab.bean.CaseSearchCriteria; -import uk.gov.laa.ccms.soa.gateway.model.BaseClient; -import uk.gov.laa.ccms.soa.gateway.model.CaseDetails; -import uk.gov.laa.ccms.soa.gateway.model.CaseSummary; import uk.gov.laa.ccms.soa.gateway.model.ClientDetail; import uk.gov.laa.ccms.soa.gateway.model.ClientTransactionResponse; import uk.gov.laa.ccms.soa.gateway.model.ContractDetail; @@ -78,44 +74,6 @@ public void testGetContractDetails_returnData() throws Exception { assertEquals(contractDetailsJson, objectMapper.writeValueAsString(response.block())); } - @Test - public void testGetCases_returnData() throws Exception { - String loginId = USER_1; - String userType = USER_TYPE; - int page = 0; - int size = 20; - CaseSearchCriteria searchCriteria = buildCopyCaseSearchCriteria(); - CaseDetails caseDetails = buildCaseDetails(); - String caseDetailsJson = objectMapper.writeValueAsString(caseDetails); - - wiremock.stubFor(get(String.format("/cases?case-reference-number=%s&" + - "provider-case-reference=%s&" + - "case-status=%s&" + - "fee-earner-id=%s&" + - "office-id=%s&" + - "client-surname=%s&" + - "page=%s&" + - "size=%s", - searchCriteria.getCaseReference(), - searchCriteria.getProviderCaseReference(), - searchCriteria.getStatus(), - searchCriteria.getFeeEarnerId(), - searchCriteria.getOfficeId(), - searchCriteria.getClientSurname(), - page, - size)) - .withHeader(SOA_GATEWAY_USER_LOGIN_ID, equalTo(loginId)) - .withHeader(SOA_GATEWAY_USER_ROLE, equalTo(userType)) - .willReturn(okJson(caseDetailsJson))); - - CaseDetails response = - soaApiClient.getCases(searchCriteria, loginId, userType, page, size).block(); - - assertNotNull(response); - assertEquals(1, response.getContent().size()); - assertEquals(caseDetailsJson, objectMapper.writeValueAsString(response)); - } - @Test public void testGetClient_returnData() throws Exception { String clientReferenceNumber = "clientRef1"; @@ -318,26 +276,5 @@ private ContractDetails buildContractDetails() { .authorisationType("AUTHTYPE1")); } - private CaseDetails buildCaseDetails() { - return new CaseDetails() - .addContentItem(new CaseSummary() - .caseReferenceNumber("caseref1") - .providerCaseReferenceNumber("provcaseref") - .caseStatusDisplay("app") - .client(new BaseClient().firstName("firstname").surname("thesurname")) - .feeEarnerName("feeEarner") - .categoryOfLaw("CAT1")); - } - - private CaseSearchCriteria buildCopyCaseSearchCriteria() { - CaseSearchCriteria searchCriteria = new CaseSearchCriteria(); - searchCriteria.setCaseReference("123"); - searchCriteria.setProviderCaseReference("456"); - searchCriteria.setStatus("caseStat"); - searchCriteria.setFeeEarnerId(678); - searchCriteria.setOfficeId(345); - searchCriteria.setClientSurname("clientSurname"); - return searchCriteria; - } } diff --git a/src/main/java/uk/gov/laa/ccms/caab/client/EbsApiClient.java b/src/main/java/uk/gov/laa/ccms/caab/client/EbsApiClient.java index 44ef72c6..00afbc1d 100644 --- a/src/main/java/uk/gov/laa/ccms/caab/client/EbsApiClient.java +++ b/src/main/java/uk/gov/laa/ccms/caab/client/EbsApiClient.java @@ -854,12 +854,12 @@ private static MultiValueMap buildQueryParams( final MultiValueMap queryParams = createDefaultQueryParams(); addQueryParam(queryParams, "provider-id", providerId); - addQueryParam(queryParams, "client-surname", criteria.getClientSurname()); addQueryParam(queryParams, "case-reference-number", criteria.getCaseReference()); addQueryParam(queryParams, "provider-case-reference", criteria.getProviderCaseReference()); addQueryParam(queryParams, "case-status", criteria.getStatus()); addQueryParam(queryParams, "fee-earner-id", criteria.getFeeEarnerId()); addQueryParam(queryParams, "office-id", criteria.getOfficeId()); + addQueryParam(queryParams, "client-surname", criteria.getClientSurname()); addQueryParam(queryParams, "page", page); addQueryParam(queryParams, "size", pageSize); return queryParams; From 01952faa1291431e727c1a14a303420e6ba2e34f Mon Sep 17 00:00:00 2001 From: Jamie Briggs Date: Thu, 16 Jan 2025 14:48:57 +0000 Subject: [PATCH 4/5] CCMSPUI-458 Updated SOA version to 0.0.48 in build.gradle Signed-off-by: Jamie Briggs --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8361d55d..43436929 100644 --- a/build.gradle +++ b/build.gradle @@ -39,7 +39,7 @@ dependencies { implementation 'uk.gov.laa.ccms.data:data-api:0.0.30-bc6420d-SNAPSHOT' - implementation 'uk.gov.laa.ccms.soa.gateway:soa-gateway-api:0.0.46-17d5bbf-SNAPSHOT' + implementation 'uk.gov.laa.ccms.soa.gateway:soa-gateway-api:0.0.48' implementation 'uk.gov.laa.ccms.caab:caab-api:0.0.40' From 10575b0fcc915937dffe70426cd0a43d5a888001 Mon Sep 17 00:00:00 2001 From: Jamie Briggs Date: Fri, 17 Jan 2025 08:16:00 +0000 Subject: [PATCH 5/5] CCMSPUI-458 Updated exception message Signed-off-by: Jamie Briggs --- .../java/uk/gov/laa/ccms/caab/service/ApplicationService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/uk/gov/laa/ccms/caab/service/ApplicationService.java b/src/main/java/uk/gov/laa/ccms/caab/service/ApplicationService.java index 3c0f6050..00a3c49d 100644 --- a/src/main/java/uk/gov/laa/ccms/caab/service/ApplicationService.java +++ b/src/main/java/uk/gov/laa/ccms/caab/service/ApplicationService.java @@ -201,7 +201,7 @@ public List getCases( caseSearchCriteria, user.getProvider().getId(), 0, searchConstants.getMaxSearchResultsCases()).block()) - .orElseThrow(() -> new CaabApplicationException("Failed to retrieve SOA Cases")); + .orElseThrow(() -> new CaabApplicationException("Failed to retrieve EBS Cases")); if (caseDetails.getTotalElements() > searchConstants.getMaxSearchResultsCases()) { throw new TooManyResultsException(