Skip to content
Snippets Groups Projects
Commit 61e394ee authored by OZGCloud's avatar OZGCloud
Browse files

OZG-4994 OZG-5068 Cleanup code

parent 8fb69c15
No related branches found
No related tags found
No related merge requests found
Showing with 261 additions and 54 deletions
package de.ozgcloud.alfa.vorgang;
import lombok.Builder;
import lombok.Getter;
@Builder(toBuilder = true)
@Getter
public class ResultPageRequestCriteria {
private int page;
private int limit;
private OrderBy orderBy;
}
......@@ -44,6 +44,8 @@ import net.devh.boot.grpc.client.inject.GrpcClient;
@Service
class VorgangRemoteService {
static final String VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH = "ClientAttribute.OzgCloud_NachrichtenManager.hasNewPostfachNachricht";
@GrpcClient(GrpcUtil.VORGANG_MANAGER_GRPC_CLIENT)
private VorgangServiceBlockingStub vorgangServiceStub;
@Autowired
......@@ -62,17 +64,14 @@ class VorgangRemoteService {
GrpcFindVorgangRequest buildFindVorgangRequest(FindVorgaengeHeaderRequestCriteria requestCriteria, FilterCriteria filterCriteria) {
var requestBuilder = createFindVorgangRequestBuilder(requestCriteria, filterCriteria);
// requestCriteria.getSearchBy().ifPresent(requestBuilder::setSearchBy);
requestCriteria.getSearchBy().ifPresentOrElse(
requestBuilder::setSearchBy,
() -> requestBuilder.setQuery(mapToGrpcQuery(filterCriteria)));
requestCriteria.getSearchBy().ifPresent(requestBuilder::setSearchBy);
return requestBuilder.build();
}
private GrpcFindVorgangRequest.Builder createFindVorgangRequestBuilder(FindVorgaengeHeaderRequestCriteria requestCriteria,
FilterCriteria filterCriteria) {
return createFindVorgangRequestBuilder(requestCriteria).setFilterBy(mapFilterCriteria(filterCriteria));
return createFindVorgangRequestBuilder(requestCriteria).setQuery(createQuery(filterCriteria)).setFilterBy(createFilterBy(filterCriteria));
}
private GrpcFindVorgangRequest.Builder createFindVorgangRequestBuilder(FindVorgaengeHeaderRequestCriteria requestCriteria) {
......@@ -82,17 +81,21 @@ class VorgangRemoteService {
.setOffset(requestCriteria.getPage() * requestCriteria.getLimit());
}
private GrpcQuery mapToGrpcQuery(FilterCriteria filterCriteria) {
GrpcQuery createQuery(FilterCriteria filterCriteria) {
var queryBuilder = GrpcQuery.newBuilder();
if (filterCriteria.isHasUngeleseneNachrichten()) {
addUngeleseneNachrichtenExpression(queryBuilder);
}
return queryBuilder.build();
}
private void addUngeleseneNachrichtenExpression(GrpcQuery.Builder queryBuilder) {
queryBuilder.addExpressions(GrpcVorgangQueryExpression.newBuilder()
.setPath("ClientAttribute.OzgCloud_NachrichtenManager.hasNewPostfachNachricht")
.setPath(VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH)
.setOperator(GrpcQueryOperator.EQUAL)
.setOperandBoolValue(true)
.build());
}
return queryBuilder.build();
}
VorgaengeHeaderResponse buildVorgaengeHeaderResponse(GrpcFindVorgangResponse response) {
return VorgaengeHeaderResponse.builder().total(response.getTotal()).vorgaengeHeader(getVorgaengeHeaderFromResponse(response)).build();
......@@ -111,10 +114,10 @@ class VorgangRemoteService {
}
GrpcFindVorgangWithEingangRequest buildFindVorgangWithEingangRequest(String vorgangId, FilterCriteria filterCriteria) {
return GrpcFindVorgangWithEingangRequest.newBuilder().setId(vorgangId).setFilterBy(mapFilterCriteria(filterCriteria)).build();
return GrpcFindVorgangWithEingangRequest.newBuilder().setId(vorgangId).setFilterBy(createFilterBy(filterCriteria)).build();
}
GrpcFilterBy mapFilterCriteria(FilterCriteria filterCriteria) {
GrpcFilterBy createFilterBy(FilterCriteria filterCriteria) {
var filterCriteriaBuilder = GrpcFilterBy.newBuilder()
.setFilterByAssignedTo(filterCriteria.isFilterByAssignedTo())
.setFilterByOrganisationseinheitenId(filterCriteria.isFilterByOrganisationseinheitenId())
......
......@@ -5,6 +5,8 @@ public class StatisticTestFactory {
public static final int COUNT_WIEDERVORLAGEN = 8;
public static final boolean EXISTS_WIEDERVORLAGE_OVERDUE = true;
public static final int COUNT_UNGELESENE_NACHRICHTEN = 5;
public static Statistic create() {
return createBuilder().build();
}
......@@ -13,6 +15,7 @@ public class StatisticTestFactory {
return Statistic.builder()
.byStatus(ByStatusTestFactory.create())
.wiedervorlagen(COUNT_WIEDERVORLAGEN)
.existsWiedervorlageOverdue(EXISTS_WIEDERVORLAGE_OVERDUE);
.existsWiedervorlageOverdue(EXISTS_WIEDERVORLAGE_OVERDUE)
.ungeleseneNachrichten(COUNT_UNGELESENE_NACHRICHTEN);
}
}
......@@ -16,6 +16,8 @@ public class FilterCriteriaTestFactory {
public static final boolean HAS_NEXT_WIEDERVORLAGE_FRIST = false;
public static final boolean HAS_UNGELESENE_NACHRICHTEN = false;
public static FilterCriteria create() {
return createBuilder().build();
}
......@@ -27,6 +29,7 @@ public class FilterCriteriaTestFactory {
.filterByAssignedTo(FILTER_BY_ASSIGNED_TO)
.assignedTo(Optional.of(UserProfileTestFactory.ID))
.organisationsEinheitenId(List.of(ORGANISATIONS_EINHEIT_ID))
.hasNextWiedervorlageFrist(HAS_NEXT_WIEDERVORLAGE_FRIST);
.hasNextWiedervorlageFrist(HAS_NEXT_WIEDERVORLAGE_FRIST)
.hasUngeleseneNachrichten(HAS_UNGELESENE_NACHRICHTEN);
}
}
package de.ozgcloud.alfa.vorgang;
import de.ozgcloud.vorgang.vorgang.GrpcQuery;
public class GrpcQueryTestFactory {
public static GrpcQuery create() {
return createBuilder().build();
}
public static GrpcQuery.Builder createBuilder() {
return GrpcQuery.newBuilder();
}
}
......@@ -142,42 +142,42 @@ class VorgangControllerITCase {
private static final String BY_STATUS_PATH = "$.statistic.byStatus.";
@Test
void shouldContainsNeu() throws Exception {
void shouldContainNeu() throws Exception {
var response = doRequest();
response.andExpect(jsonPath(BY_STATUS_PATH + "neu").value(ByStatusTestFactory.NEU_COUNT));
}
@Test
void shouldContainsAngenommen() throws Exception {
void shouldContainAngenommen() throws Exception {
var response = doRequest();
response.andExpect(jsonPath(BY_STATUS_PATH + "angenommen").value(ByStatusTestFactory.ANGENOMMEN_COUNT));
}
@Test
void shouldContainsInBearbeitung() throws Exception {
void shouldContainInBearbeitung() throws Exception {
var response = doRequest();
response.andExpect(jsonPath(BY_STATUS_PATH + "inBearbeitung").value(ByStatusTestFactory.IN_BEARBEITUNG_COUNT));
}
@Test
void shouldContainsBeschieden() throws Exception {
void shouldContainBeschieden() throws Exception {
var response = doRequest();
response.andExpect(jsonPath(BY_STATUS_PATH + "beschieden").value(ByStatusTestFactory.BESCHIEDEN_COUNT));
}
@Test
void shouldContainsAbgeschlossen() throws Exception {
void shouldContainAbgeschlossen() throws Exception {
var response = doRequest();
response.andExpect(jsonPath(BY_STATUS_PATH + "abgeschlossen").value(ByStatusTestFactory.ABGESCHLOSSEN_COUNT));
}
@Test
void shouldContainsVerworfen() throws Exception {
void shouldContainVerworfen() throws Exception {
var response = doRequest();
response.andExpect(jsonPath(BY_STATUS_PATH + "verworfen").value(ByStatusTestFactory.VERWORFEN_COUNT));
......@@ -185,11 +185,18 @@ class VorgangControllerITCase {
}
@Test
void shouldContainsWiedervorlagen() throws Exception {
void shouldContainWiedervorlagen() throws Exception {
var response = doRequest();
response.andExpect(jsonPath("$.statistic.wiedervorlagen").value(StatisticTestFactory.COUNT_WIEDERVORLAGEN));
}
@Test
void shouldContainUngeleseneNachrichten() throws Exception {
var response = doRequest();
response.andExpect(jsonPath("$.statistic.ungeleseneNachrichten").value(StatisticTestFactory.COUNT_UNGELESENE_NACHRICHTEN));
}
}
}
......
......@@ -606,6 +606,123 @@ class VorgangControllerTest {
}
}
}
@Nested
class TestGetAllByUngeleseneNachrichten {
@Test
void shouldCallHandleGetAllRequest() {
doRequest();
verify(controller).handleGetAllRequest(any(FindVorgaengeHeaderRequestCriteria.class));
}
@DisplayName("build criteria")
@Nested
class TestBuildCriteria {
@Test
void shouldHavePage() {
doRequest();
verify(controller).handleGetAllRequest(criteriaCaptor.capture());
assertThat(criteriaCaptor.getValue().getPage()).isEqualTo(PAGE);
}
@Test
void shoulHaveLimit() {
doRequest();
verify(controller).handleGetAllRequest(criteriaCaptor.capture());
assertThat(criteriaCaptor.getValue().getLimit()).isEqualTo(LIMIT);
}
@Test
void shoulHaveHasUngeleseneNachrichten() {
doRequest();
verify(controller).handleGetAllRequest(criteriaCaptor.capture());
assertThat(criteriaCaptor.getValue().getFilterCriteria().isHasUngeleseneNachrichten()).isTrue();
}
}
@SneakyThrows
private void doRequest() {
mockMvc.perform(get(PATH)
.param(VorgangController.PARAM_PAGE, Integer.toString(PAGE))
.param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT))
.param(VorgangController.PARAM_NACHRICHTEN, VorgangController.PARAM_NACHRICHTEN_UNGELESENE))
.andExpect(status().isOk());
}
}
@Nested
class TestGetAllByAssignedToAndUngeleseneNachrichten {
private static final UserId ASSIGNED_TO = UserProfileTestFactory.ID;
@Test
void shouldCallHandleGetAllRequest() {
doRequest();
verify(controller).handleGetAllRequest(any(FindVorgaengeHeaderRequestCriteria.class));
}
@DisplayName("build criteria")
@Nested
class TestBuildCriteria {
@Test
void shouldHavePage() {
doRequest();
verify(controller).handleGetAllRequest(criteriaCaptor.capture());
assertThat(criteriaCaptor.getValue().getPage()).isEqualTo(PAGE);
}
@Test
void shoulHaveLimit() {
doRequest();
verify(controller).handleGetAllRequest(criteriaCaptor.capture());
assertThat(criteriaCaptor.getValue().getLimit()).isEqualTo(LIMIT);
}
@Test
void shoulHaveAssignedTo() {
doRequest();
verify(controller).handleGetAllRequest(criteriaCaptor.capture());
assertThat(criteriaCaptor.getValue().getFilterCriteria().getAssignedTo()).hasValue(ASSIGNED_TO);
}
@Test
void shouldSetFilterByAssignedTo() {
doRequest();
verify(controller).handleGetAllRequest(criteriaCaptor.capture());
assertThat(criteriaCaptor.getValue().getFilterCriteria().isFilterByAssignedTo()).isTrue();
}
@Test
void shoulHaveHasUngeleseneNachrichten() {
doRequest();
verify(controller).handleGetAllRequest(criteriaCaptor.capture());
assertThat(criteriaCaptor.getValue().getFilterCriteria().isHasUngeleseneNachrichten()).isTrue();
}
}
@SneakyThrows
private void doRequest() {
mockMvc.perform(get(PATH)
.param(VorgangController.PARAM_PAGE, Integer.toString(PAGE))
.param(VorgangController.PARAM_LIMIT, Integer.toString(LIMIT))
.param(VorgangController.PARAM_ASSIGNED_TO, ASSIGNED_TO.toString())
.param(VorgangController.PARAM_NACHRICHTEN, VorgangController.PARAM_NACHRICHTEN_UNGELESENE))
.andExpect(status().isOk());
}
}
}
@DisplayName("As Optional")
......
......@@ -23,6 +23,7 @@
*/
package de.ozgcloud.alfa.vorgang;
import static de.ozgcloud.alfa.vorgang.VorgangRemoteService.*;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
......@@ -39,9 +40,12 @@ import org.mockito.Mock;
import org.mockito.Spy;
import de.ozgcloud.alfa.common.user.UserProfileTestFactory;
import de.ozgcloud.vorgang.common.GrpcQueryOperator;
import de.ozgcloud.vorgang.vorgang.GrpcFilterBy;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangRequest;
import de.ozgcloud.vorgang.vorgang.GrpcFindVorgangResponse;
import de.ozgcloud.vorgang.vorgang.GrpcQuery;
import de.ozgcloud.vorgang.vorgang.GrpcVorgangQueryExpression;
import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub;
class VorgangRemoteServiceTest {
......@@ -59,6 +63,8 @@ class VorgangRemoteServiceTest {
private final GrpcFilterBy filterBy = GrpcFilterByTestFactory.create();
private final GrpcQuery query = GrpcQueryTestFactory.create();
@DisplayName("Find vorgaenge header")
@Nested
class TestFindVorgaengeHeader {
......@@ -73,7 +79,8 @@ class VorgangRemoteServiceTest {
@BeforeEach
void initMockReturnValues() {
doReturn(filterBy).when(service).mapFilterCriteria(any());
doReturn(query).when(service).createQuery(any());
doReturn(filterBy).when(service).createFilterBy(any());
doReturn(VorgangListResponseTestFactory.create()).when(service).buildVorgaengeHeaderResponse(any());
}
......@@ -84,11 +91,18 @@ class VorgangRemoteServiceTest {
verify(service).buildFindVorgangRequest(requestCriteria, filterCriteria);
}
@Test
void callCreateQuery() {
callService();
verify(service).createQuery(filterCriteria);
}
@Test
void callCreateFilterBy() {
callService();
verify(service).mapFilterCriteria(filterCriteria);
verify(service).createFilterBy(filterCriteria);
}
@Test
......@@ -109,7 +123,8 @@ class VorgangRemoteServiceTest {
@BeforeEach
void initMockReturnValues() {
doReturn(filterBy).when(service).mapFilterCriteria(any());
doReturn(query).when(service).createQuery(any());
doReturn(filterBy).when(service).createFilterBy(any());
}
@Test
......@@ -127,6 +142,13 @@ class VorgangRemoteServiceTest {
.isEqualTo(FindVorgaengeRequestCriteriaTestFactory.PAGE * FindVorgaengeRequestCriteriaTestFactory.LIMIT);
}
@Test
void shouldSetQuery() {
var request = callService();
assertThat(request.getQuery()).isEqualTo(query);
}
@Test
void shouldSetFilterBy() {
var request = callService();
......@@ -186,13 +208,64 @@ class VorgangRemoteServiceTest {
}
}
@Nested
class TestCreateQuery {
@Nested
class WhenHasUngeleseneNachrichtenIsTrue {
private final FilterCriteria filterCriteria = FilterCriteriaTestFactory.createBuilder().hasUngeleseneNachrichten(true).build();
@Test
void shouldAddExpression() {
var query = service.createQuery(filterCriteria);
assertThat(query.getExpressionsList()).extracting(GrpcVorgangQueryExpression::getPath)
.containsOnlyOnce(VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH);
}
@Test
void shouldHaveOperator() {
var expression = getExpression(service.createQuery(filterCriteria));
assertThat(expression.getOperator()).isEqualTo(GrpcQueryOperator.EQUAL);
}
@Test
void shouldHaveOperandBoolValue() {
var expression = getExpression(service.createQuery(filterCriteria));
assertThat(expression.getOperandBoolValue()).isTrue();
}
private GrpcVorgangQueryExpression getExpression(GrpcQuery query) {
return query.getExpressionsList().stream()
.filter(expression -> expression.getPath().equals(VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH)).findFirst().orElseThrow();
}
}
@Nested
class WhenHasUngeleseneNachrichtenIsFalse {
private final FilterCriteria filterCriteria = FilterCriteriaTestFactory.createBuilder().hasUngeleseneNachrichten(false).build();
@Test
void shouldNotAddExpression() {
var query = service.createQuery(filterCriteria);
assertThat(query.getExpressionsList()).extracting(GrpcVorgangQueryExpression::getPath)
.isNotEqualTo(VORGAENGE_WITH_UNGELESENE_NACHRICHTEN_PATH);
}
}
}
@DisplayName("Create filterBy")
@Nested
class TestCreateFilterBy {
@Test
void shouldSetFilterByOrganisationsEinheitId() {
var filterCriteria = mapFilterCriteria();
var filterCriteria = createFilterBy();
assertThat(filterCriteria.getFilterByOrganisationseinheitenId())
.isEqualTo(FilterCriteriaTestFactory.FILTER_BY_ORGANISATIONS_EINHEITEN_ID);
......@@ -200,7 +273,7 @@ class VorgangRemoteServiceTest {
@Test
void shouldSetOrganisationsEinheitIds() {
var filterCriteria = mapFilterCriteria();
var filterCriteria = createFilterBy();
assertThat(filterCriteria.getOrganisationseinheitIdList()).containsExactly(FilterCriteriaTestFactory.ORGANISATIONS_EINHEIT_ID);
}
......@@ -211,7 +284,7 @@ class VorgangRemoteServiceTest {
@Test
void shouldBeSet() {
var filterCriteria = mapFilterCriteria();
var filterCriteria = createFilterBy();
assertThat(filterCriteria.getFilterByAssignedTo()).isTrue();
}
......@@ -223,14 +296,14 @@ class VorgangRemoteServiceTest {
@Test
void shouldBeSetIfExists() {
var filterCriteria = mapFilterCriteria();
var filterCriteria = createFilterBy();
assertThat(filterCriteria.getAssignedTo()).isEqualTo(UserProfileTestFactory.ID.toString());
}
@Test
void shouldNotBeSetIfNotExist() {
var filterCriteria = mapFilterCriteria(FilterCriteriaTestFactory.createBuilder().assignedTo(Optional.empty()).build());
var filterCriteria = createFilterBy(FilterCriteriaTestFactory.createBuilder().assignedTo(Optional.empty()).build());
assertThat(filterCriteria.getAssignedTo()).isEqualTo(StringUtils.EMPTY);
}
......@@ -242,14 +315,14 @@ class VorgangRemoteServiceTest {
@Test
void shouldBeSetIfExists() {
var filterCriteria = mapFilterCriteria();
var filterCriteria = createFilterBy();
assertThat(filterCriteria.getStatusList()).containsExactly(FilterCriteriaTestFactory.VORGANG_STATUS.toString());
}
@Test
void shouldNotBeSetIfNotExist() {
var filterCriteria = mapFilterCriteria(FilterCriteriaTestFactory.createBuilder().status(Optional.empty()).build());
var filterCriteria = createFilterBy(FilterCriteriaTestFactory.createBuilder().status(Optional.empty()).build());
assertThat(filterCriteria.getStatusCount()).isZero();
......@@ -262,25 +335,25 @@ class VorgangRemoteServiceTest {
@Test
void shouldBeSetToFalse() {
var filterCriteria = mapFilterCriteria(FilterCriteriaTestFactory.createBuilder().hasNextWiedervorlageFrist(false).build());
var filterCriteria = createFilterBy(FilterCriteriaTestFactory.createBuilder().hasNextWiedervorlageFrist(false).build());
assertThat(filterCriteria.getHasNextWiedervorlageFrist()).isFalse();
}
@Test
void shouldNotBeSetToTrue() {
var filterCriteria = mapFilterCriteria(FilterCriteriaTestFactory.createBuilder().hasNextWiedervorlageFrist(true).build());
var filterCriteria = createFilterBy(FilterCriteriaTestFactory.createBuilder().hasNextWiedervorlageFrist(true).build());
assertThat(filterCriteria.getHasNextWiedervorlageFrist()).isTrue();
}
}
private GrpcFilterBy mapFilterCriteria() {
return mapFilterCriteria(FilterCriteriaTestFactory.create());
private GrpcFilterBy createFilterBy() {
return createFilterBy(FilterCriteriaTestFactory.create());
}
private GrpcFilterBy mapFilterCriteria(FilterCriteria filterCriteria) {
return service.mapFilterCriteria(filterCriteria);
private GrpcFilterBy createFilterBy(FilterCriteria filterCriteria) {
return service.createFilterBy(filterCriteria);
}
}
......@@ -300,14 +373,14 @@ class VorgangRemoteServiceTest {
when(serviceStub.findVorgangWithEingang(any()))
.thenReturn(GrpcVorgangWithEingangResponseTestFactory.createVorgangWithEingangResponse());
when(vorgangWithEingangMapper.toVorgangWithEingang(any())).thenReturn(vorgangWithEingang);
doReturn(filterBy).when(service).mapFilterCriteria(any());
doReturn(filterBy).when(service).createFilterBy(any());
}
@Test
void shouldCreateFilterBy() {
callService();
verify(service).mapFilterCriteria(any());
verify(service).createFilterBy(any());
}
@Test
......@@ -345,7 +418,7 @@ class VorgangRemoteServiceTest {
@BeforeEach
void mockReturnValue() {
doReturn(filterBy).when(service).mapFilterCriteria(any());
doReturn(filterBy).when(service).createFilterBy(any());
}
@Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment