From b0dac5bc2ba67af7cf46b1e66b45d2387a2458ff Mon Sep 17 00:00:00 2001 From: Felix Reichenbach <felix.reichenbach@mgm-tp.com> Date: Mon, 10 Mar 2025 15:48:52 +0100 Subject: [PATCH] OZG-7572 OZG-7902 consider feature toggle in statisticService --- .../alfa/statistic/StatisticService.java | 17 +++-- .../alfa/statistic/StatisticServiceTest.java | 71 +++++++++++++++++-- 2 files changed, 78 insertions(+), 10 deletions(-) diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticService.java index 26cbc36abf..9710c03464 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticService.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticService.java @@ -27,9 +27,11 @@ import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.stream.Stream; import org.springframework.stereotype.Service; +import de.ozgcloud.alfa.common.FeatureToggleProperties; import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.UserRole; import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus; @@ -39,15 +41,12 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor class StatisticService { - private static final List<VorgangStatus> COUNT_BY_VORGANG_STATUS_VERWALTUNG_USER = List.of(VorgangStatus.NEU, VorgangStatus.ANGENOMMEN, - VorgangStatus.IN_BEARBEITUNG, VorgangStatus.BESCHIEDEN, VorgangStatus.ABGESCHLOSSEN, VorgangStatus.VERWORFEN, VorgangStatus.ZU_LOESCHEN, - VorgangStatus.WEITERGELEITET); private static final List<VorgangStatus> COUNT_BY_VORGANG_STATUS_POSTSTELLE_USER = Collections.emptyList(); private static final List<VorgangStatus> COUNT_BY_VORGANG_EINHEITLICHER_ANSPRECHPARTNER = Collections.emptyList(); private final StatisticRemoteService remoteService; - private final CurrentUserService currentUserService; + private final FeatureToggleProperties featureToggleProperties; public Statistic getVorgaengeStatistic() { var response = remoteService.getVorgaengeStatistics(getCountByVorgangStatusList()); @@ -56,7 +55,7 @@ class StatisticService { List<VorgangStatus> getCountByVorgangStatusList() { if (currentUserService.hasRole(UserRole.VERWALTUNG_USER)) { - return COUNT_BY_VORGANG_STATUS_VERWALTUNG_USER; + return getVerwaltungUserStatuses(); } if (currentUserService.hasRole(UserRole.VERWALTUNG_POSTSTELLE)) { return COUNT_BY_VORGANG_STATUS_POSTSTELLE_USER; @@ -92,4 +91,12 @@ class StatisticService { private boolean getBooleanResult(Map<String, StatisticResult> response, String resultName) { return Optional.ofNullable(response.get(resultName)).map(StatisticResult::getBoolValue).orElse(false); } + + List<VorgangStatus> getVerwaltungUserStatuses() { + return Stream + .of(VorgangStatus.NEU, VorgangStatus.ANGENOMMEN, VorgangStatus.IN_BEARBEITUNG, VorgangStatus.BESCHIEDEN, VorgangStatus.ABGESCHLOSSEN, + VorgangStatus.VERWORFEN, VorgangStatus.ZU_LOESCHEN, VorgangStatus.WEITERGELEITET) + .filter(status -> status != VorgangStatus.WEITERGELEITET || featureToggleProperties.isForwardByOzgCloudEnabled()) + .toList(); + } } \ No newline at end of file diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticServiceTest.java index 180fe52812..58ef88e6ca 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticServiceTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticServiceTest.java @@ -39,6 +39,7 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; +import de.ozgcloud.alfa.common.FeatureToggleProperties; import de.ozgcloud.alfa.common.user.CurrentUserService; import de.ozgcloud.alfa.common.user.UserRole; import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus; @@ -52,6 +53,8 @@ class StatisticServiceTest { private StatisticRemoteService remoteService; @Mock private CurrentUserService currentUserService; + @Mock + private FeatureToggleProperties featureToggleProperties; @Nested class TestBuildGetVorgaengeStatisticResult { @@ -183,17 +186,25 @@ class StatisticServiceTest { @Nested class TestGetCountByVorgangStatusList { - private static final List<VorgangStatus> COUNT_BY_VORGANG_STATUS_VERWALTUNG_USER = List.of(VorgangStatus.NEU, VorgangStatus.ANGENOMMEN, - VorgangStatus.IN_BEARBEITUNG, VorgangStatus.BESCHIEDEN, VorgangStatus.ABGESCHLOSSEN, VorgangStatus.VERWORFEN, - VorgangStatus.ZU_LOESCHEN, VorgangStatus.WEITERGELEITET); + private static final List<VorgangStatus> VORGANG_STATUS_VERWALTUNG_USER = List.of(VorgangStatus.NEU, VorgangStatus.ANGENOMMEN); + + @Test + void shouldCallGetVerwaltungUserStatuses() { + when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true); + + service.getCountByVorgangStatusList(); + + verify(service).getVerwaltungUserStatuses(); + } @Test - void shouldGetForVerwalungUser() { + void shouldReturnVerwaltungUserStatuses() { when(currentUserService.hasRole(UserRole.VERWALTUNG_USER)).thenReturn(true); + doReturn(VORGANG_STATUS_VERWALTUNG_USER).when(service).getVerwaltungUserStatuses(); var result = service.getCountByVorgangStatusList(); - assertThat(result).containsAll(COUNT_BY_VORGANG_STATUS_VERWALTUNG_USER); + assertThat(result).containsAll(VORGANG_STATUS_VERWALTUNG_USER); } @Test @@ -272,4 +283,54 @@ class StatisticServiceTest { assertThat(result).isEqualTo(statistic); } } + + @Nested + class TestGetVorgangStatuses { + + @Test + void shouldCallFeatureToggleProperties() { + service.getVerwaltungUserStatuses(); + + verify(featureToggleProperties).isForwardByOzgCloudEnabled(); + } + + @Nested + class TestOnIsForwardByOzgCloudEnabled { + + @BeforeEach + void mock() { + when(featureToggleProperties.isForwardByOzgCloudEnabled()).thenReturn(true); + } + + @Test + void shouldReturnStream() { + var expectedStatuses = List.of(VorgangStatus.NEU, VorgangStatus.ANGENOMMEN, VorgangStatus.IN_BEARBEITUNG, + VorgangStatus.BESCHIEDEN, VorgangStatus.ABGESCHLOSSEN, VorgangStatus.VERWORFEN, VorgangStatus.ZU_LOESCHEN, + VorgangStatus.WEITERGELEITET); + + var stream = service.getVerwaltungUserStatuses(); + + assertThat(stream).containsExactlyInAnyOrderElementsOf(expectedStatuses); + } + } + + @Nested + class TestOnIsNotForwardByOzgCloudEnabled { + + @BeforeEach + void mock() { + when(featureToggleProperties.isForwardByOzgCloudEnabled()).thenReturn(false); + } + + @Test + void shouldReturnStream() { + var expectedStatuses = List.of(VorgangStatus.NEU, VorgangStatus.ANGENOMMEN, VorgangStatus.IN_BEARBEITUNG, + VorgangStatus.BESCHIEDEN, VorgangStatus.ABGESCHLOSSEN, VorgangStatus.VERWORFEN, VorgangStatus.ZU_LOESCHEN); + + var stream = service.getVerwaltungUserStatuses(); + + assertThat(stream).containsExactlyInAnyOrderElementsOf(expectedStatuses); + } + } + } } -- GitLab