Skip to content

Commit

Permalink
Merge pull request #104 from Onlineberatung/develop
Browse files Browse the repository at this point in the history
merge with OS
  • Loading branch information
tkuzynow authored Aug 22, 2023
2 parents c432055 + 9f16c48 commit 4ef9cfd
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Expression;
import jakarta.persistence.criteria.Order;
import jakarta.persistence.criteria.Path;
import jakarta.persistence.criteria.Predicate;
import jakarta.persistence.criteria.Root;
import java.util.Collection;
Expand Down Expand Up @@ -204,12 +205,9 @@ private List<Agency> applySortingAndPagination(EntityManager entityManager,
CriteriaBuilder criteriaBuilder, CriteriaQuery<Agency> criteriaQuery, Root<Agency> root) {
// Sorting
if (agencyAdminSearch.getSortField() != null && !agencyAdminSearch.getSortField().isEmpty()) {
Expression<String> toLower = criteriaBuilder.lower(
root.get(agencyAdminSearch.getSortField()));
Order order =
agencyAdminSearch.isAscending() ? criteriaBuilder.asc(toLower) : criteriaBuilder.desc(
toLower);
criteriaQuery.orderBy(order);
Path<String> expression = root.get(agencyAdminSearch.getSortField());
Class<?> javaType = expression.getJavaType();
addOrderBy(agencyAdminSearch, criteriaBuilder, criteriaQuery, expression, javaType);
}

// Pagination
Expand All @@ -222,6 +220,24 @@ private List<Agency> applySortingAndPagination(EntityManager entityManager,
.getResultList();
}

private void addOrderBy(AgencyAdminSearch agencyAdminSearch,
CriteriaBuilder criteriaBuilder, CriteriaQuery<Agency> criteriaQuery, Path<String> expression,
Class<?> javaType) {
if (String.class.equals(javaType)) {
Expression<String> toLower = criteriaBuilder.lower(
expression);
Order order =
agencyAdminSearch.isAscending() ? criteriaBuilder.asc(toLower) : criteriaBuilder.desc(
toLower);
criteriaQuery.orderBy(order);
} else {
Order order =
agencyAdminSearch.isAscending() ? criteriaBuilder.asc(expression) : criteriaBuilder.desc(
expression);
criteriaQuery.orderBy(order);
}
}

protected Predicate keywordSearchPredicate(String keyword, CriteriaBuilder criteriaBuilder,
Root<Agency> root) {
return criteriaBuilder.or(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import de.caritas.cob.agencyservice.AgencyServiceApplication;
import de.caritas.cob.agencyservice.api.helper.AuthenticatedUser;
import de.caritas.cob.agencyservice.api.model.Sort;
import de.caritas.cob.agencyservice.api.model.Sort.FieldEnum;
import de.caritas.cob.agencyservice.api.service.securityheader.SecurityHeaderSupplier;
import de.caritas.cob.agencyservice.config.apiclient.UserAdminServiceApiControllerFactory;
import de.caritas.cob.agencyservice.useradminservice.generated.web.model.AdminAgencyResponseDTO;
Expand Down Expand Up @@ -94,6 +95,26 @@ void searchAgency_Should_FindOnlyAgenciesManagedByTheAdmin_WhenUserIsAgencyAdmin
assertThat(collect).isSorted();
}

@Test
void searchAgency_Should_FindOnlyAgenciesManagedByTheAdmin_WhenUserIsAgencyAdmin_AndSortByOffline() {
// given
when(authenticatedUser.hasRestrictedAgencyPriviliges()).thenReturn(false);
when(authenticatedUser.getUserId()).thenReturn("userId");
when(securityHeaderSupplier.getKeycloakAndCsrfHttpHeaders()).thenReturn(new HttpHeaders());
when(userAdminServiceApiControllerFactory.createControllerApi()).thenReturn(adminUserControllerApi);
when(adminUserControllerApi.getAdminAgencies("userId")).thenReturn(Lists.newArrayList(2L, 3L));

// when
var agencySearchResult = agencyAdminSearchService.searchAgencies("", 1, 20, new Sort().field(
FieldEnum.OFFLINE).order(Sort.OrderEnum.ASC));

// then
assertThat(agencySearchResult.getEmbedded()).hasSize(20);

List<Boolean> collect = agencySearchResult.getEmbedded().stream().filter(result -> result.getEmbedded().getOffline() != null).map(p -> p.getEmbedded().getOffline()).collect(Collectors.toList());
assertThat(collect).isSorted();
}

@Test
void searchAgency_Should_FindOnlyAgenciesManagedByTheAdmin_WhenUserIsAgencyAdmin_AndSortByPostcodeDescending() {
// given
Expand Down

0 comments on commit 4ef9cfd

Please sign in to comment.