diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/AlfaSpringProperties.java b/alfa-service/src/main/java/de/ozgcloud/alfa/AlfaSpringProperties.java new file mode 100644 index 0000000000000000000000000000000000000000..8cd9af36425bc9ff9a5f8ddff4664339c08f2169 --- /dev/null +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/AlfaSpringProperties.java @@ -0,0 +1,14 @@ +package de.ozgcloud.alfa; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +import lombok.Getter; + +@Configuration +public class AlfaSpringProperties { + + @Getter + @Value("${spring.application.name}") + private String applicationName; +} diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java index fbd8861943a56e85bd4127e32d351a4318c6a5a1..b2c9bd3c1ac957ff55037513a7488e3439bdc0b3 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/EnvironmentController.java @@ -35,15 +35,15 @@ import de.ozgcloud.alfa.vorgang.VorgangProcessorProperties; @RestController @RequestMapping(EnvironmentController.BASE_PATH) public class EnvironmentController { - - static final String BASE_PATH = "/api/environment"; + + static final String BASE_PATH = "/api/environment"; // NOSONAR @Autowired private OAuth2Properties oAuth2Properties; @Autowired private GoofyProperties goofyProperties; - + @Autowired private VorgangProcessorProperties vorgangProcessorProperties; diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticRemoteService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticRemoteService.java index ca2989926949cd23d9c585310a4706a68576acab..2160d7ffd9b4efba00e3e1109300c3352a6a2bd1 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticRemoteService.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/statistic/StatisticRemoteService.java @@ -15,6 +15,7 @@ import de.itvsh.ozg.pluto.statistic.GrpcVorgangStatisticQuery.Operator; import de.itvsh.ozg.pluto.statistic.GrpcVorgangStatisticRequest; import de.itvsh.ozg.pluto.statistic.GrpcVorgangStatisticResponse; import de.itvsh.ozg.pluto.statistic.StatisticServiceGrpc.StatisticServiceBlockingStub; +import de.ozgcloud.alfa.AlfaSpringProperties; import de.ozgcloud.alfa.common.GrpcUtil; import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus; import net.devh.boot.grpc.client.inject.GrpcClient; @@ -27,7 +28,7 @@ class StatisticRemoteService { static final String EXISTS_WIEDERVORLAGE_OVERDUE_RESULT_NAME = "existsWiedervorlageOverdue"; static final String STATUS_PATH = "Vorgang.status"; - static final String WIEDERVORLAGE_NEXT_FRIST_PATH = "ClientAttribute.Goofy.nextWiedervorlageFrist"; + static final String WIEDERVORLAGE_NEXT_FRIST_PATH_TEMPLATE = "ClientAttribute.%s.nextWiedervorlageFrist"; static final String OPERAND_TODAY_DATE = "today()"; @@ -35,6 +36,8 @@ class StatisticRemoteService { private StatisticServiceBlockingStub statisticServiceStub; @Autowired private StatisticMapper mapper; + @Autowired + private AlfaSpringProperties alfaSpringProperties; public Map<String, StatisticResult> getVorgaengeStatistics(List<VorgangStatus> countByVorgangStatus) { var grpcRequest = GrpcVorgangStatisticRequest.newBuilder() @@ -64,7 +67,7 @@ class StatisticRemoteService { GrpcVorgangStatisticQuery buildExistsWiedervorlageOverdueQuery() { return GrpcVorgangStatisticQuery.newBuilder() .setResultName(EXISTS_WIEDERVORLAGE_OVERDUE_RESULT_NAME) - .setPath(WIEDERVORLAGE_NEXT_FRIST_PATH) + .setPath(String.format(WIEDERVORLAGE_NEXT_FRIST_PATH_TEMPLATE, alfaSpringProperties.getApplicationName())) .setGroupMethod(GroupMethod.EXISTS) .setOperator(Operator.LESS_THEN_OR_EQUAL_TO) .setOperandStringValue(OPERAND_TODAY_DATE) diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticQueryTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticQueryTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..a7df744e48b0d94e6be8253edcc284d41a3a4415 --- /dev/null +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticQueryTestFactory.java @@ -0,0 +1,14 @@ +package de.ozgcloud.alfa.statistic; + +import de.itvsh.ozg.pluto.statistic.GrpcVorgangStatisticQuery; + +public class GrpcVorgangStatisticQueryTestFactory { + + public static GrpcVorgangStatisticQuery create() { + return createBuilder().build(); + } + + public static GrpcVorgangStatisticQuery.Builder createBuilder() { + return GrpcVorgangStatisticQuery.newBuilder(); + } +} diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticResponseTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticResponseTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..c9fa2a9d833d538a7886bd2103c8172d6415d30c --- /dev/null +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/GrpcVorgangStatisticResponseTestFactory.java @@ -0,0 +1,14 @@ +package de.ozgcloud.alfa.statistic; + +import de.itvsh.ozg.pluto.statistic.GrpcVorgangStatisticResponse; + +public class GrpcVorgangStatisticResponseTestFactory { + + public static GrpcVorgangStatisticResponse create() { + return createBuilder().build(); + } + + public static GrpcVorgangStatisticResponse.Builder createBuilder() { + return GrpcVorgangStatisticResponse.newBuilder(); + } +} diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticRemoteServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticRemoteServiceTest.java index 37fc3c3d6716861fc6755654b4f904bc3c33a2c6..f947d6734f6e14cf1b71feab4369ee9609fc1f5e 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticRemoteServiceTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/statistic/StatisticRemoteServiceTest.java @@ -19,13 +19,15 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; +import com.thedeanda.lorem.LoremIpsum; + import de.itvsh.ozg.pluto.statistic.GrpcVorgangCountResponse; -import de.itvsh.ozg.pluto.statistic.GrpcVorgangStatisticQuery; import de.itvsh.ozg.pluto.statistic.GrpcVorgangStatisticQuery.GroupMethod; import de.itvsh.ozg.pluto.statistic.GrpcVorgangStatisticQuery.Operator; import de.itvsh.ozg.pluto.statistic.GrpcVorgangStatisticResponse; import de.itvsh.ozg.pluto.statistic.GrpcVorgangStatisticResult; import de.itvsh.ozg.pluto.statistic.StatisticServiceGrpc.StatisticServiceBlockingStub; +import de.ozgcloud.alfa.AlfaSpringProperties; import de.ozgcloud.alfa.vorgang.Vorgang.VorgangStatus; class StatisticRemoteServiceTest { @@ -37,32 +39,55 @@ class StatisticRemoteServiceTest { private StatisticServiceBlockingStub serviceStub; @Mock private StatisticMapper mapper; + @Mock + private AlfaSpringProperties alfaSpringProperties; private static final List<VorgangStatus> STATUSES_TO_COUNT = List.of(VorgangStatus.NEU, VorgangStatus.ANGENOMMEN, VorgangStatus.IN_BEARBEITUNG, VorgangStatus.BESCHIEDEN, VorgangStatus.ABGESCHLOSSEN, VorgangStatus.VERWORFEN, VorgangStatus.ZU_LOESCHEN); + @DisplayName("Build count by vorgang status query") @Nested class TestBuildCountByVorgangStatusQuery { @ParameterizedTest @EnumSource(mode = Mode.EXCLUDE, names = "WEITERGELEITET") - void shouldBuildQuery(VorgangStatus vorgangStatus) { + void shouldContainsResultName(VorgangStatus vorgangStatus) { + var query = service.buildCountByVorgangStatusQuery(vorgangStatus); + + assertThat(query.getResultName()).isEqualTo(String.format(COUNT_VORGANG_STATUS_RESULT_NAME_FORMAT, vorgangStatus.name())); + } + + @ParameterizedTest + @EnumSource(mode = Mode.EXCLUDE, names = "WEITERGELEITET") + void shouldContainsPath(VorgangStatus vorgangStatus) { + var query = service.buildCountByVorgangStatusQuery(vorgangStatus); + + assertThat(query.getPath()).isEqualTo(STATUS_PATH); + } + + @ParameterizedTest + @EnumSource(mode = Mode.EXCLUDE, names = "WEITERGELEITET") + void shouldContainsGroupMethod(VorgangStatus vorgangStatus) { var query = service.buildCountByVorgangStatusQuery(vorgangStatus); - assertThat(query) - .extracting( - GrpcVorgangStatisticQuery::getResultName, - GrpcVorgangStatisticQuery::getPath, - GrpcVorgangStatisticQuery::getOperator, - GrpcVorgangStatisticQuery::getOperandStringValue, - GrpcVorgangStatisticQuery::getGroupMethod) - .containsExactly( - String.format(COUNT_VORGANG_STATUS_RESULT_NAME_FORMAT, vorgangStatus.name()), - STATUS_PATH, - Operator.EQUAL, - vorgangStatus.name(), - GroupMethod.COUNT); + assertThat(query.getGroupMethod()).isEqualTo(GroupMethod.COUNT); + } + + @ParameterizedTest + @EnumSource(mode = Mode.EXCLUDE, names = "WEITERGELEITET") + void shouldContainsOperator(VorgangStatus vorgangStatus) { + var query = service.buildCountByVorgangStatusQuery(vorgangStatus); + + assertThat(query.getOperator()).isEqualTo(Operator.EQUAL); + } + + @ParameterizedTest + @EnumSource(mode = Mode.EXCLUDE, names = "WEITERGELEITET") + void shouldContainsOperandStringValue(VorgangStatus vorgangStatus) { + var query = service.buildCountByVorgangStatusQuery(vorgangStatus); + + assertThat(query.getOperandStringValue()).isEqualTo(vorgangStatus.name()); } } @@ -81,35 +106,67 @@ class StatisticRemoteServiceTest { @Nested class TestBuildExistsWiedervorlageOverdueQuery { + private final String applicationName = LoremIpsum.getInstance().getFirstName(); + + @BeforeEach + void init() { + when(alfaSpringProperties.getApplicationName()).thenReturn(applicationName); + } + + @Test + void shouldContainsResultName() { + var query = service.buildExistsWiedervorlageOverdueQuery(); + + assertThat(query.getResultName()).isEqualTo(StatisticRemoteService.EXISTS_WIEDERVORLAGE_OVERDUE_RESULT_NAME); + } + @Test - void shouldBuildQuery() { + void shouldContainsPath() { var query = service.buildExistsWiedervorlageOverdueQuery(); - assertThat(query) - .extracting( - GrpcVorgangStatisticQuery::getResultName, - GrpcVorgangStatisticQuery::getPath, - GrpcVorgangStatisticQuery::getOperator, - GrpcVorgangStatisticQuery::getGroupMethod, - GrpcVorgangStatisticQuery::getOperandStringValue) - .contains( - EXISTS_WIEDERVORLAGE_OVERDUE_RESULT_NAME, - WIEDERVORLAGE_NEXT_FRIST_PATH, - Operator.LESS_THEN_OR_EQUAL_TO, - GroupMethod.EXISTS, - OPERAND_TODAY_DATE); + assertThat(query.getPath()).isEqualTo(String.format(StatisticRemoteService.WIEDERVORLAGE_NEXT_FRIST_PATH_TEMPLATE, applicationName)); + } + + @Test + void shouldContainsGroupMethod() { + var query = service.buildExistsWiedervorlageOverdueQuery(); + + assertThat(query.getGroupMethod()).isEqualTo(GroupMethod.EXISTS); + } + + @Test + void shouldContainsOperator() { + var query = service.buildExistsWiedervorlageOverdueQuery(); + + assertThat(query.getOperator()).isEqualTo(Operator.LESS_THEN_OR_EQUAL_TO); + } + + @Test + void shouldContainsOperandStringValue() { + var query = service.buildExistsWiedervorlageOverdueQuery(); + + assertThat(query.getOperandStringValue()).isEqualTo(StatisticRemoteService.OPERAND_TODAY_DATE); + } + + @Test + void shouldCallPropertiesToGetClientName() { + service.buildExistsWiedervorlageOverdueQuery(); + + verify(alfaSpringProperties).getApplicationName(); } } + @DisplayName("Get vorgaenge statistic") @Nested class TestGetVorgaengeStatistics { - private GrpcVorgangStatisticResponse response; + private final GrpcVorgangStatisticResponse response = GrpcVorgangStatisticResponseTestFactory.create();; @BeforeEach void beforeEach() { - response = GrpcVorgangStatisticResponse.newBuilder().build(); when(serviceStub.getVorgangStatistic(any())).thenReturn(response); + + doReturn(GrpcVorgangStatisticQueryTestFactory.create()).when(service).buildExistsWiedervorlageOverdueQuery(); } @Test diff --git a/goofy-server/src/main/resources/application.yml b/goofy-server/src/main/resources/application.yml index 5837d4eb11e997f55fb06b8012b27760ded8017b..ba93adc361269a881e2cabe739047a48233ca434 100644 --- a/goofy-server/src/main/resources/application.yml +++ b/goofy-server/src/main/resources/application.yml @@ -10,7 +10,7 @@ spring: pathmatch: matching-strategy: ant-path-matcher application: - name: Goofy + name: Alfa jackson: deserialization: 'ADJUST_DATES_TO_CONTEXT_TIME_ZONE': false diff --git a/goofy-server/src/main/resources/banner.txt b/goofy-server/src/main/resources/banner.txt index 13e3273b90490767f580107cfd3fec70dcb2ba0d..e95c531227e0ec959fd83f59e7031a9bb2b1b8d3 100644 --- a/goofy-server/src/main/resources/banner.txt +++ b/goofy-server/src/main/resources/banner.txt @@ -1,6 +1,7 @@ - ___ ___ ___ ___ __ __ - / __| / _ \ / _ \ | __|\ \ / / -| (_ || (_) || (_) || _| \ / - \___| \___/ \___/ |_| |_| -================================ + ______ __ ______ ______ +/\ __ \ /\ \ /\ ___\ /\ __ \ +\ \ __ \ \ \ \____ \ \ __\ \ \ __ \ + \ \_\ \_\ \ \_____\ \ \_\ \ \_\ \_\ + \/_/\/_/ \/_____/ \/_/ \/_/\/_/ +================================================= ${spring-boot.version} ${application.version}