From 78cb540aa8d17595c824fbb65dc84f77724b560a Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Mon, 30 Sep 2024 11:06:57 +0200 Subject: [PATCH] OZG-6751 Testcoverage verbessert --- .../information/InfoManagerProperties.java | 7 ++- .../info/nachricht/NachrichtGrpcService.java | 10 ++-- .../info/InfoManagerApplicationTest.java | 6 +++ .../info/NachrichtEventTestFactory.java | 6 ++- .../InfoManagerPropertiesITCase.java | 54 +++++++++++++++++++ .../nachricht/NachrichtenGrpcServiceTest.java | 28 ++++++++++ .../nachricht/NachrichtenServiceTest.java | 4 ++ 7 files changed, 107 insertions(+), 8 deletions(-) create mode 100644 info-manager-server/src/test/java/de/ozgcloud/info/information/InfoManagerPropertiesITCase.java diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/information/InfoManagerProperties.java b/info-manager-server/src/main/java/de/ozgcloud/info/information/InfoManagerProperties.java index 1cd0f36..18c39e6 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/information/InfoManagerProperties.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/information/InfoManagerProperties.java @@ -21,14 +21,19 @@ package de.ozgcloud.info.information; import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.context.properties.ConfigurationPropertiesScan; import org.springframework.context.annotation.Configuration; import lombok.Getter; +import lombok.Setter; @Getter +@Setter @Configuration @ConfigurationProperties(prefix = InfoManagerProperties.PREFIX) +@ConfigurationPropertiesScan public class InfoManagerProperties { static final String PREFIX = "ozgcloud.infomanager"; - private final String postfachIdKeyName = "postkorbhandle"; + public static final String POSTKORBHANDLE = "postkorbhandle"; + private String postfachIdKeyName = POSTKORBHANDLE; } diff --git a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtGrpcService.java b/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtGrpcService.java index 4bae807..dea9163 100644 --- a/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtGrpcService.java +++ b/info-manager-server/src/main/java/de/ozgcloud/info/nachricht/NachrichtGrpcService.java @@ -57,18 +57,16 @@ public class NachrichtGrpcService extends NachrichtServiceGrpc.NachrichtServiceI private void saveNachricht(GrpcNewNachrichtRequest request) { var nachricht = nachrichtenMapper.fromGrpcNachricht(request.getNachricht()); - if (isValid(nachricht)) { - nachrichtService.save(nachricht); - } + checkForValidity(nachricht); + + nachrichtService.save(nachricht); } - private boolean isValid(NachrichtEvent nachrichtEvent) { + private void checkForValidity(NachrichtEvent nachrichtEvent) { Set<ConstraintViolation<NachrichtEvent>> violations = validator.validate(nachrichtEvent); if (!violations.isEmpty()) { throw new ConstraintViolationException(violations); } - - return true; } @Override diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/InfoManagerApplicationTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/InfoManagerApplicationTest.java index bece6d4..5ccbd9a 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/InfoManagerApplicationTest.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/InfoManagerApplicationTest.java @@ -22,6 +22,7 @@ */ package de.ozgcloud.info; +import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Spy; @@ -29,4 +30,9 @@ class InfoManagerApplicationTest { @Spy @InjectMocks private InfoManagerApplication application; + + @Test + void shouldLoadContext() { //NOSONAR + // empty + } } \ No newline at end of file diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/NachrichtEventTestFactory.java b/info-manager-server/src/test/java/de/ozgcloud/info/NachrichtEventTestFactory.java index e263d68..cc97023 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/NachrichtEventTestFactory.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/NachrichtEventTestFactory.java @@ -47,7 +47,11 @@ public class NachrichtEventTestFactory { } public static GrpcNewNachrichtRequest createNewNachrichtRequest() { - return GrpcNewNachrichtRequest.newBuilder().setNachricht(createGrpcNachricht()).build(); + return createNewNachrichtRequestBuilder().setNachricht(createGrpcNachricht()).build(); + } + + public static GrpcNewNachrichtRequest.Builder createNewNachrichtRequestBuilder() { + return GrpcNewNachrichtRequest.newBuilder().setNachricht(createGrpcNachricht()); } public static GrpcFinishedNachrichtRequest createFinishNachrichtRequest() { diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/information/InfoManagerPropertiesITCase.java b/info-manager-server/src/test/java/de/ozgcloud/info/information/InfoManagerPropertiesITCase.java new file mode 100644 index 0000000..04e51e5 --- /dev/null +++ b/info-manager-server/src/test/java/de/ozgcloud/info/information/InfoManagerPropertiesITCase.java @@ -0,0 +1,54 @@ +package de.ozgcloud.info.information; + +import static de.ozgcloud.info.information.InfoManagerProperties.*; +import static org.assertj.core.api.Assertions.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; + +import de.ozgcloud.common.test.ITCase; + +@SpringBootTest(classes = { InfoManagerProperties.class }) +@ITCase +class InfoManagerPropertiesITCase { + @TestPropertySource(properties = { + InfoManagerProperties.PREFIX + ".postfachIdKeyName" + "=" + TestLoadingConfiguration.OTHER_POSTFACH_KEY, + }) + @Nested + class TestLoadingConfiguration { + static final String OTHER_POSTFACH_KEY = "otherPostfachKey"; + + @Autowired + private InfoManagerProperties infoManagerProperties; + + @Test + void shouldHaveProperties() { + assertThat(infoManagerProperties).isNotNull(); + } + + @Test + void testPostfachHandleKey() { + assertThat(infoManagerProperties.getPostfachIdKeyName()).isEqualTo(OTHER_POSTFACH_KEY); + } + } + + @Nested + class TestLoadingDefaultConfiguration { + + @Autowired + private InfoManagerProperties infoManagerProperties; + + @Test + void shouldHaveProperties() { + assertThat(infoManagerProperties).isNotNull(); + } + + @Test + void testPostfachHandleKey() { + assertThat(infoManagerProperties.getPostfachIdKeyName()).isEqualTo(POSTKORBHANDLE); + } + } +} \ No newline at end of file diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceTest.java index 223e74b..5c31a18 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceTest.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenGrpcServiceTest.java @@ -25,6 +25,7 @@ import static org.mockito.Mockito.*; import java.util.Set; +import jakarta.validation.ConstraintViolation; import jakarta.validation.ConstraintViolationException; import jakarta.validation.Validator; @@ -129,6 +130,33 @@ class NachrichtenGrpcServiceTest { } } + @Nested + class TestSaveInvalidNewNachrichtEvent { + @Mock + private StreamObserver<GrpcNewNachrichtReply> newNachrichtStreamObserver; + private final GrpcNachricht invalidNachricht = NachrichtEventTestFactory.createGrpcNachrichtBuilder().setNachrichtenListUrl("invalid") + .build(); + private final GrpcNewNachrichtRequest invalidNachrichtRequest = NachrichtEventTestFactory.createNewNachrichtRequestBuilder() + .setNachricht(invalidNachricht).build(); + + @BeforeEach + @SuppressWarnings("unchecked") + void init() { + when(nachrichtenMapper.fromGrpcNachricht(any())).thenReturn( + NachrichtEventTestFactory.createNachrichtEventBuilder().id(null).nachrichtenListUrl("invalid").build()); + var constraintViolation = mock(ConstraintViolation.class); + + when(validator.validate(any(NachrichtEvent.class))).thenReturn(Set.of(constraintViolation)); + } + + @Test + void shouldNotCreateNachrichtBecauseInvalidNachrichtenListUrl() { + nachrichtenGrpcService.saveNewNachricht(invalidNachrichtRequest, newNachrichtStreamObserver); + + verify(nachrichtenService, never()).save(any()); + } + } + @Nested class TestFinishNachrichtEvent { @Mock diff --git a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenServiceTest.java b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenServiceTest.java index 38d8a14..d93e6e6 100644 --- a/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenServiceTest.java +++ b/info-manager-server/src/test/java/de/ozgcloud/info/nachricht/NachrichtenServiceTest.java @@ -94,6 +94,10 @@ class NachrichtenServiceTest { class TestFinishNachrichtEvent { @Test void shouldCallDelete() { + when( + repository.findByPostfachIdAndNachrichtenListUrl(NachrichtEventTestFactory.POSTKORB_HANDLE, NachrichtEventTestFactory.URL)).thenReturn( + Optional.of(NachrichtEventTestFactory.createNachrichtEvent())); + service.finish(NachrichtEventTestFactory.createNachrichtEvent()); verify(repository, atMostOnce()).findByPostfachIdAndNachrichtenListUrl(NachrichtEventTestFactory.POSTKORB_HANDLE, -- GitLab