Skip to content

Commit

Permalink
Merge branch 'master' into Downgrade-serenity-gradle-plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
CadeFaulkner committed May 17, 2024
2 parents abde70a + 6589e33 commit 939df0f
Show file tree
Hide file tree
Showing 11 changed files with 90 additions and 18 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ plugins {
id 'com.github.ben-manes.versions' version '0.51.0'
id 'org.sonarqube' version '5.0.0.4638'
id 'uk.gov.hmcts.java' version '0.12.61'
id 'org.flywaydb.flyway' version '10.12.0'
id 'org.flywaydb.flyway' version '10.13.0'
id 'net.serenity-bdd.serenity-gradle-plugin' version '4.0.46'
}

Expand Down
4 changes: 2 additions & 2 deletions charts/opal-fines-service/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ appVersion: "1.0"
description: A Helm chart for opal-fines-service app
name: opal-fines-service
home: https://github.com/hmcts/opal-fines-service
version: 0.0.32
version: 0.0.33
maintainers:
- name: HMCTS Opal Team
dependencies:
- name: java
version: 5.2.0
version: 5.2.1
repository: 'https://hmctspublic.azurecr.io/helm/v1/repo/'
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ void testGetBusinessUnitById() throws Exception {
.andExpect(jsonPath("$.businessUnitCode").value("AAAA"))
.andExpect(jsonPath("$.businessUnitType").value("LARGE UNIT"))
.andExpect(jsonPath("$.accountNumberPrefix").value("XX"))
.andExpect(jsonPath("$.parentBusinessUnitId").value(99));
.andExpect(jsonPath("$.parentBusinessUnit.businessUnitId").value(99));
}


Expand Down Expand Up @@ -78,7 +78,7 @@ void testPostBusinessUnitsSearch() throws Exception {
.andExpect(jsonPath("$[0].businessUnitCode").value("AAAA"))
.andExpect(jsonPath("$[0].businessUnitType").value("LARGE UNIT"))
.andExpect(jsonPath("$[0].accountNumberPrefix").value("XX"))
.andExpect(jsonPath("$[0].parentBusinessUnitId").value(99));
.andExpect(jsonPath("$[0].parentBusinessUnit.businessUnitId").value(99));
}

@Test
Expand All @@ -96,7 +96,7 @@ private BusinessUnitEntity createBusinessUnitEntity() {
.businessUnitCode("AAAA")
.businessUnitType("LARGE UNIT")
.accountNumberPrefix("XX")
.parentBusinessUnitId((short)99)
.parentBusinessUnit(BusinessUnitEntity.builder().businessUnitId((short)99).build())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import uk.gov.hmcts.opal.dto.reference.BusinessUnitReferenceDataResults;
import uk.gov.hmcts.opal.dto.search.BusinessUnitSearchDto;
import uk.gov.hmcts.opal.entity.BusinessUnitEntity;
import uk.gov.hmcts.opal.entity.projection.BusinessUnitReferenceData;
import uk.gov.hmcts.opal.service.BusinessUnitServiceInterface;
import uk.gov.hmcts.opal.service.opal.BusinessUnitService;

Expand Down Expand Up @@ -69,7 +70,7 @@ public ResponseEntity<BusinessUnitReferenceDataResults> getBusinessUnitRefData(
@PathVariable Optional<String> filter) {
log.info(":GET:getBusinessUnitRefData: query: \n{}", filter);

List<BusinessUnitEntity> refData = opalBusinessUnitService.getReferenceData(filter);
List<BusinessUnitReferenceData> refData = opalBusinessUnitService.getReferenceData(filter);

log.info(":GET:getBusinessUnitRefData: business unit reference data count: {}", refData.size());
return ResponseEntity.ok(BusinessUnitReferenceDataResults.builder().refData(refData).build());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import uk.gov.hmcts.opal.entity.BusinessUnitEntity;
import uk.gov.hmcts.opal.entity.projection.BusinessUnitReferenceData;

import java.util.List;
import java.util.Optional;
Expand All @@ -15,11 +15,11 @@
@AllArgsConstructor
public class BusinessUnitReferenceDataResults {
private Integer count;
private List<BusinessUnitEntity> refData;
private List<BusinessUnitReferenceData> refData;

public static class BusinessUnitReferenceDataResultsBuilder {
public BusinessUnitReferenceDataResults.BusinessUnitReferenceDataResultsBuilder refData(
List<BusinessUnitEntity> refData) {
List<BusinessUnitReferenceData> refData) {
this.refData = refData;
return this.count(Optional.ofNullable(refData).map(List::size).orElse(0));
}
Expand Down
11 changes: 9 additions & 2 deletions src/main/java/uk/gov/hmcts/opal/entity/BusinessUnitEntity.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Builder;
Expand Down Expand Up @@ -38,6 +40,11 @@ public class BusinessUnitEntity {
@Column(name = "account_number_prefix", length = 2)
private String accountNumberPrefix;

@Column(name = "parent_business_unit_id")
private Short parentBusinessUnitId;
@ManyToOne
@JoinColumn(name = "parent_business_unit_id")
private BusinessUnitEntity parentBusinessUnit;

@Column(name = "opal_domain", length = 30)
private String opalDomain;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package uk.gov.hmcts.opal.entity.projection;

public interface BusinessUnitReferenceData {

Short getBusinessUnitId();

String getBusinessUnitName();

String getBusinessUnitCode();

String getBusinessUnitType();

String getAccountNumberPrefix();

String getOpalDomain();

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.From;
import jakarta.persistence.criteria.Join;
import jakarta.persistence.criteria.Predicate;
import org.springframework.data.jpa.domain.Specification;
import uk.gov.hmcts.opal.dto.search.BusinessUnitSearchDto;
Expand Down Expand Up @@ -76,14 +77,20 @@ public static Specification<BusinessUnitEntity> equalsParentBusinessUnitId(Short

public static Predicate equalsParentBusinessUnitIdPredicate(
From<?, BusinessUnitEntity> from, CriteriaBuilder builder, Short parentBusinessUnitId) {
return builder.equal(from.get(BusinessUnitEntity_.parentBusinessUnitId), parentBusinessUnitId);
return equalsBusinessUnitIdPredicate(joinParentBusinessUnit(from), builder, parentBusinessUnitId);
}


public static Specification<BusinessUnitEntity> likeAnyBusinessUnit(String filter) {
return Specification.anyOf(
likeBusinessUnitName(filter),
likeBusinessUnitCode(filter),
likeBusinessUnitType(filter)
);
}

public static Join<BusinessUnitEntity, BusinessUnitEntity> joinParentBusinessUnit(
From<?, BusinessUnitEntity> from) {
return from.join(BusinessUnitEntity_.parentBusinessUnit);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import uk.gov.hmcts.opal.dto.search.BusinessUnitSearchDto;
import uk.gov.hmcts.opal.entity.BusinessUnitEntity;
import uk.gov.hmcts.opal.entity.BusinessUnitEntity_;
import uk.gov.hmcts.opal.entity.projection.BusinessUnitReferenceData;
import uk.gov.hmcts.opal.repository.BusinessUnitRepository;
import uk.gov.hmcts.opal.repository.jpa.BusinessUnitSpecs;
import uk.gov.hmcts.opal.service.BusinessUnitServiceInterface;
Expand Down Expand Up @@ -40,14 +41,15 @@ public List<BusinessUnitEntity> searchBusinessUnits(BusinessUnitSearchDto criter
return page.getContent();
}

public List<BusinessUnitEntity> getReferenceData(Optional<String> filter) {
public List<BusinessUnitReferenceData> getReferenceData(Optional<String> filter) {

Sort nameSort = Sort.by(Sort.Direction.ASC, BusinessUnitEntity_.BUSINESS_UNIT_NAME);

Page<BusinessUnitEntity> page = businessUnitRepository
Page<BusinessUnitReferenceData> page = businessUnitRepository
.findBy(specs.referenceDataFilter(filter),
ffq -> ffq
.sortBy(nameSort)
.as(BusinessUnitReferenceData.class)
.page(Pageable.unpaged()));

return page.getContent();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import uk.gov.hmcts.opal.dto.reference.BusinessUnitReferenceDataResults;
import uk.gov.hmcts.opal.dto.search.BusinessUnitSearchDto;
import uk.gov.hmcts.opal.entity.BusinessUnitEntity;
import uk.gov.hmcts.opal.entity.projection.BusinessUnitReferenceData;
import uk.gov.hmcts.opal.service.opal.BusinessUnitService;

import java.util.List;
Expand Down Expand Up @@ -67,8 +68,8 @@ void testSearchBusinessUnits_Success() {
@Test
void testGetBusinessUnitsRefData_Success() {
// Arrange
BusinessUnitEntity entity = BusinessUnitEntity.builder().build();
List<BusinessUnitEntity> businessUnitList = List.of(entity);
BusinessUnitReferenceData entity = createBusinessUnitReferenceData();
List<BusinessUnitReferenceData> businessUnitList = List.of(entity);

when(businessUnitService.getReferenceData(any())).thenReturn(businessUnitList);

Expand All @@ -84,4 +85,39 @@ void testGetBusinessUnitsRefData_Success() {
assertEquals(businessUnitList, refDataResults.getRefData());
verify(businessUnitService, times(1)).getReferenceData(any());
}

private BusinessUnitReferenceData createBusinessUnitReferenceData() {
return new BusinessUnitReferenceData() {
@Override
public Short getBusinessUnitId() {
return (short)1;
}

@Override
public String getBusinessUnitName() {
return "Main BU";
}

@Override
public String getBusinessUnitCode() {
return "MNBU";
}

@Override
public String getBusinessUnitType() {
return "Big";
}

@Override
public String getAccountNumberPrefix() {
return "Prefix";
}

@Override
public String getOpalDomain() {
return "Domain";
}
};

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.springframework.data.repository.query.FluentQuery;
import uk.gov.hmcts.opal.dto.search.BusinessUnitSearchDto;
import uk.gov.hmcts.opal.entity.BusinessUnitEntity;
import uk.gov.hmcts.opal.entity.projection.BusinessUnitReferenceData;
import uk.gov.hmcts.opal.repository.BusinessUnitRepository;

import java.util.List;
Expand Down Expand Up @@ -75,6 +76,7 @@ void testSearchBusinessUnits() {
void testBusinessUnitsReferenceData() {
// Arrange
FluentQuery.FetchableFluentQuery ffq = Mockito.mock(FluentQuery.FetchableFluentQuery.class);
when(ffq.as(any())).thenReturn(ffq);
when(ffq.sortBy(any())).thenReturn(ffq);

BusinessUnitEntity businessUnitEntity = BusinessUnitEntity.builder().build();
Expand All @@ -85,7 +87,7 @@ void testBusinessUnitsReferenceData() {
});

// Act
List<BusinessUnitEntity> result = businessUnitService.getReferenceData(Optional.empty());
List<BusinessUnitReferenceData> result = businessUnitService.getReferenceData(Optional.empty());

// Assert
assertEquals(List.of(businessUnitEntity), result);
Expand Down

0 comments on commit 939df0f

Please sign in to comment.