diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/AntragsraumProperties.java b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumProperties.java similarity index 60% rename from src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/AntragsraumProperties.java rename to src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumProperties.java index e579531eaf63fc355a587e62fdeb2275d3af56e3..860818fa9c7e82e7331fca1ef06bcb1939d73a8d 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/AntragsraumProperties.java +++ b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumProperties.java @@ -1,4 +1,4 @@ -package de.ozgcloud.nachrichten.postfach.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import jakarta.validation.constraints.NotEmpty; @@ -13,12 +13,12 @@ import lombok.Setter; @Getter @Setter @Configuration -@ConditionalOnProperty(AntragsraumProperties.PROPERTY_ANTRAGSRAUM_URL) -@ConfigurationProperties(prefix = "ozgcloud.antragsraum") +@ConditionalOnProperty(AntragraumProperties.PROPERTY_ANTRAGSRAUM_URL) +@ConfigurationProperties(prefix = "ozgcloud.antragraum") @Validated -class AntragsraumProperties { +public class AntragraumProperties { - static final String PROPERTY_ANTRAGSRAUM_URL = "ozgcloud.antragsraum.url"; + public static final String PROPERTY_ANTRAGSRAUM_URL = "ozgcloud.antragraum.url"; @NotEmpty private String url; diff --git a/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java new file mode 100644 index 0000000000000000000000000000000000000000..0bbdf0ab26d16ad9f9c14f164f63f241995963f1 --- /dev/null +++ b/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java @@ -0,0 +1,47 @@ +package de.ozgcloud.nachrichten.antragraum; + +import static java.util.Objects.*; + +import jakarta.annotation.PostConstruct; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Service; + +import de.ozgcloud.nachrichten.NachrichtenManagerProperties; +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +@ConditionalOnProperty(AntragraumProperties.PROPERTY_ANTRAGSRAUM_URL) +public class AntragraumService { + + static final String USER_NOTIFICATION_TEMPLATE = """ + Guten Tag, + + bei der Bearbeitung Ihres Antrags hat sich eine Rückfrage ergeben. Bitte beantworten Sie diese im Antragsraum: + + %s + + Vielen Dank, + Ihre digitale Verwaltung + """; + + private final AntragraumProperties properties; + private final NachrichtenManagerProperties nachrichtenManagerProperties; + + @PostConstruct + void init() { + if (isNull(nachrichtenManagerProperties.getUrl())) { + throw new IllegalStateException("Address of Nachrichten-Manager is not set"); + } + } + + public String getAntragsraumUrl() { + return properties.getUrl(); + } + + public String getUserNotificationText() { + return USER_NOTIFICATION_TEMPLATE.formatted(getAntragsraumUrl()); + } + +} diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerRemoteService.java b/src/main/java/de/ozgcloud/nachrichten/info/InfoManagerRemoteService.java similarity index 75% rename from src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerRemoteService.java rename to src/main/java/de/ozgcloud/nachrichten/info/InfoManagerRemoteService.java index e1f78a3b3babdce4b7032e3bce4b9809887009e8..47e348e465deef3bf276d8e01040f37c03bf0c82 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerRemoteService.java +++ b/src/main/java/de/ozgcloud/nachrichten/info/InfoManagerRemoteService.java @@ -1,4 +1,4 @@ -package de.ozgcloud.nachrichten.postfach.antragsraum; +package de.ozgcloud.nachrichten.info; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -8,7 +8,7 @@ import de.ozgcloud.info.nachricht.NachrichtServiceGrpc.NachrichtServiceBlockingS import net.devh.boot.grpc.client.inject.GrpcClient; @Service -class InfomanagerRemoteService { +class InfoManagerRemoteService { @GrpcClient("info-manager") private NachrichtServiceBlockingStub nachrichtServiceStub; @@ -16,12 +16,12 @@ class InfomanagerRemoteService { @Autowired private InfomanagerNachrichtMapper nachrichtMapper; - public String sendNotification(InfomanagerNachricht nachricht) { + public String sendNotification(InfoManagerRequest nachricht) { var grpcNewNachrichtReply = nachrichtServiceStub.saveNewNachricht(buildNachrichtRequest(nachricht)); return grpcNewNachrichtReply.getStatus(); } - GrpcNewNachrichtRequest buildNachrichtRequest(InfomanagerNachricht nachricht) { + GrpcNewNachrichtRequest buildNachrichtRequest(InfoManagerRequest nachricht) { return GrpcNewNachrichtRequest.newBuilder().setNachricht(nachrichtMapper.toGrpc(nachricht)).build(); } diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerNachricht.java b/src/main/java/de/ozgcloud/nachrichten/info/InfoManagerRequest.java similarity index 67% rename from src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerNachricht.java rename to src/main/java/de/ozgcloud/nachrichten/info/InfoManagerRequest.java index d317a821f3bf4a6d3ccbacd5cf53fd1fbd00b7ed..639de00a4579a5bb79587ae266e6a3b7c70de697 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerNachricht.java +++ b/src/main/java/de/ozgcloud/nachrichten/info/InfoManagerRequest.java @@ -1,11 +1,11 @@ -package de.ozgcloud.nachrichten.postfach.antragsraum; +package de.ozgcloud.nachrichten.info; import lombok.Builder; import lombok.Getter; @Builder @Getter -public class InfomanagerNachricht { +public class InfoManagerRequest { private String nachrichtId; private String vorgangId; diff --git a/src/main/java/de/ozgcloud/nachrichten/info/InfoManagerService.java b/src/main/java/de/ozgcloud/nachrichten/info/InfoManagerService.java new file mode 100644 index 0000000000000000000000000000000000000000..0894f261289cbb127021fda5807a1a889e5615f6 --- /dev/null +++ b/src/main/java/de/ozgcloud/nachrichten/info/InfoManagerService.java @@ -0,0 +1,35 @@ +package de.ozgcloud.nachrichten.info; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; + +import de.ozgcloud.nachrichten.NachrichtenManagerProperties; +import de.ozgcloud.nachrichten.antragraum.AntragraumProperties; +import de.ozgcloud.nachrichten.postfach.PostfachException; +import de.ozgcloud.nachrichten.postfach.PostfachMessageCode; +import de.ozgcloud.nachrichten.postfach.PostfachNachricht; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +@ConditionalOnProperty(AntragraumProperties.PROPERTY_ANTRAGSRAUM_URL) +public class InfoManagerService { + + private final InfoManagerRemoteService infomanagerRemoteService; + private final NachrichtenManagerProperties nachrichtenManagerProperties; + + public void notifyInfoManager(PostfachNachricht postfachNachricht) { + try { + infomanagerRemoteService.sendNotification(builInfomanagerRequest(postfachNachricht)); + } catch (RuntimeException e) { + throw new PostfachException("Error while sending notification to Antragsraum", PostfachMessageCode.PROCESS_FAILED_MESSAGE_CODE, e); + } + } + + InfoManagerRequest builInfomanagerRequest(PostfachNachricht postfachNachricht) { + return InfoManagerRequest.builder() + .nachrichtId(postfachNachricht.getId()) + .vorgangId(postfachNachricht.getVorgangId()) + .postfachId(postfachNachricht.getPostfachId()) + .nachrichtenManagerUrl(nachrichtenManagerProperties.getUrl()) + .build(); + } +} diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerNachrichtMapper.java b/src/main/java/de/ozgcloud/nachrichten/info/InfomanagerNachrichtMapper.java similarity index 66% rename from src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerNachrichtMapper.java rename to src/main/java/de/ozgcloud/nachrichten/info/InfomanagerNachrichtMapper.java index 140d39214e659e9cf000004277633257de9246ab..655bdc3f724e1792b4ee5fb0408f10d403e354fd 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerNachrichtMapper.java +++ b/src/main/java/de/ozgcloud/nachrichten/info/InfomanagerNachrichtMapper.java @@ -1,4 +1,4 @@ -package de.ozgcloud.nachrichten.postfach.antragsraum; +package de.ozgcloud.nachrichten.info; import org.mapstruct.Mapper; import org.mapstruct.Mapping; @@ -9,6 +9,6 @@ import de.ozgcloud.info.nachricht.GrpcNachricht; interface InfomanagerNachrichtMapper { @Mapping(target = "nachrichtenListUrl", source = "nachrichtenManagerUrl") - GrpcNachricht toGrpc(InfomanagerNachricht infomanagerNachricht); + GrpcNachricht toGrpc(InfoManagerRequest infomanagerNachricht); } diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerProperties.java b/src/main/java/de/ozgcloud/nachrichten/info/InfomanagerProperties.java similarity index 76% rename from src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerProperties.java rename to src/main/java/de/ozgcloud/nachrichten/info/InfomanagerProperties.java index 4b2484ecbfa38c60728dbd68431a96f5fe9c01eb..eb89410dcb38b94405da0135acbfbb0db0fff40d 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerProperties.java +++ b/src/main/java/de/ozgcloud/nachrichten/info/InfomanagerProperties.java @@ -1,4 +1,4 @@ -package de.ozgcloud.nachrichten.postfach.antragsraum; +package de.ozgcloud.nachrichten.info; import jakarta.validation.constraints.NotEmpty; @@ -7,6 +7,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.validation.annotation.Validated; +import de.ozgcloud.nachrichten.antragraum.AntragraumProperties; import lombok.Getter; import lombok.Setter; @@ -14,7 +15,7 @@ import lombok.Setter; @Setter @Configuration @ConfigurationProperties(prefix = "grpc.client.info-manager") -@ConditionalOnProperty(AntragsraumProperties.PROPERTY_ANTRAGSRAUM_URL) +@ConditionalOnProperty(AntragraumProperties.PROPERTY_ANTRAGSRAUM_URL) @Validated public class InfomanagerProperties { diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtService.java b/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtService.java index c107aa046d9ddbd24711bc9260fbe02785860d62..e25434580bfdd469b80fbf950f39197c53996c6e 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtService.java +++ b/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtService.java @@ -42,4 +42,23 @@ public interface PersistPostfachNachrichtService { // TODO use file id as soon it is available String persistAttachment(String vorgangId, AttachmentFile attachment); + + Stream<PostfachNachricht> findRueckfragen(String postfachId); + + /** + * Persists the given answer + * + * @param answer The given answer + * @param rueckfrageId The ID of the original Rueckfrage + * @return + */ + String persistAnswer(String rueckfrageId, PostfachNachricht answer); + + /** + * Returns all Answers given for the Rueckfrage identified by id + * + * @param rueckfrageId ID of the Rueckfrage to load answers for. + * @return all Answers + */ + Stream<PostfachNachricht> findAnswers(String rueckfrageId); } diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java b/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java index ebde712d1420462f71f72e5d1f27abdb4a09152e..c00faf36947a9ca9b608e65ae794025e0be89fbc 100644 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java +++ b/src/main/java/de/ozgcloud/nachrichten/postfach/PostfachService.java @@ -39,10 +39,11 @@ import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; +import de.ozgcloud.nachrichten.antragraum.AntragraumService; import de.ozgcloud.nachrichten.attributes.ClientAttributeService; +import de.ozgcloud.nachrichten.info.InfoManagerService; import de.ozgcloud.nachrichten.postfach.PostfachNachricht.Direction; import de.ozgcloud.nachrichten.postfach.PostfachNachricht.ReplyOption; -import de.ozgcloud.nachrichten.postfach.antragsraum.AntragsraumService; import de.ozgcloud.nachrichten.postfach.osi.OsiPostfachServerProcessException; import de.ozgcloud.vorgang.callcontext.CurrentUserService; import lombok.NonNull; @@ -75,8 +76,10 @@ class PostfachService { @Autowired private CurrentUserService userService; - @Autowired(required = false) - private AntragsraumService antragsraumService; + @Autowired + private Optional<InfoManagerService> infomanagerService; + @Autowired + private Optional<AntragraumService> antragraumService; public void saveDraft(String vorgangId, PostfachNachricht nachricht) { persistMail(userService.getUser().getUserId(), @@ -155,7 +158,7 @@ class PostfachService { Optional<PostfachNachricht> processForAntragsraum(PostfachNachricht mail) { if (isNotifyAntragsraum(mail.getReplyOption())) { - antragsraumService.notifyAntragsraum(mail); + infomanagerService.ifPresent(infoManager -> infoManager.notifyInfoManager(mail)); return adjustMail(mail); } return Optional.empty(); @@ -166,7 +169,7 @@ class PostfachService { } Optional<PostfachNachricht> adjustMail(PostfachNachricht nachricht) { - return getAntragsraumService().map(antragsraum -> nachricht.toBuilder().mailBody(antragsraum.getUserNotificationText()).build()); + return antragraumService.map(antragraum -> nachricht.toBuilder().mailBody(antragraum.getUserNotificationText()).build()); } SendPostfachNachrichtResponse proceedwithWarnException(String commandId, OsiPostfachServerProcessException e) { @@ -228,11 +231,7 @@ class PostfachService { } boolean isPostfachWithAntragsraum(PostfachRemoteService postfachRemoteService) { - return POSTFACH_TYPES_WITH_ANTRAGSRAUM.contains(postfachRemoteService.getPostfachType()) && getAntragsraumService().isPresent(); - } - - Optional<AntragsraumService> getAntragsraumService() { - return Optional.ofNullable(antragsraumService); + return POSTFACH_TYPES_WITH_ANTRAGSRAUM.contains(postfachRemoteService.getPostfachType()) && infomanagerService.isPresent(); } private void ifPostfachConfigured(Runnable block) { diff --git a/src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/AntragsraumService.java b/src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/AntragsraumService.java deleted file mode 100644 index e92f34090eadcf1d64c71634d1d85c60d3b87317..0000000000000000000000000000000000000000 --- a/src/main/java/de/ozgcloud/nachrichten/postfach/antragsraum/AntragsraumService.java +++ /dev/null @@ -1,71 +0,0 @@ -package de.ozgcloud.nachrichten.postfach.antragsraum; - -import static java.util.Objects.*; - -import jakarta.annotation.PostConstruct; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.stereotype.Service; - -import de.ozgcloud.nachrichten.NachrichtenManagerProperties; -import de.ozgcloud.nachrichten.postfach.PostfachException; -import de.ozgcloud.nachrichten.postfach.PostfachMessageCode; -import de.ozgcloud.nachrichten.postfach.PostfachNachricht; - -@Service -@ConditionalOnProperty(AntragsraumProperties.PROPERTY_ANTRAGSRAUM_URL) -public class AntragsraumService { - - static final String USER_NOTIFICATION_TEMPLATE = """ - Guten Tag, - - bei der Bearbeitung Ihres Antrags hat sich eine Rückfrage ergeben. Bitte beantworten Sie diese im Antragsraum: - - %s - - Vielen Dank, - Ihre digitale Verwaltung - """; - - @Autowired - private AntragsraumProperties properties; - - @Autowired - private NachrichtenManagerProperties nachrichtenManagerProperties; - - @Autowired - private InfomanagerRemoteService infomanagerRemoteService; - - @PostConstruct - void init() { - if (isNull(nachrichtenManagerProperties.getUrl())) { - throw new IllegalStateException("Address of Nachrichten-Manager is not set"); - } - } - - public String getAntragsraumUrl() { - return properties.getUrl(); - } - - public String getUserNotificationText() { - return USER_NOTIFICATION_TEMPLATE.formatted(getAntragsraumUrl()); - } - - public void notifyAntragsraum(PostfachNachricht postfachNachricht) { - try { - infomanagerRemoteService.sendNotification(builInfomanagerNachricht(postfachNachricht)); - } catch (RuntimeException e) { - throw new PostfachException("Error while sending notification to Antragsraum", PostfachMessageCode.PROCESS_FAILED_MESSAGE_CODE, e); - } - } - - InfomanagerNachricht builInfomanagerNachricht(PostfachNachricht postfachNachricht) { - return InfomanagerNachricht.builder() - .nachrichtId(postfachNachricht.getId()) - .vorgangId(postfachNachricht.getVorgangId()) - .postfachId(postfachNachricht.getPostfachId()) - .nachrichtenManagerUrl(nachrichtenManagerProperties.getUrl()) - .build(); - } -} diff --git a/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..fb81269bda54f4e645399c75c7cf666bfaeaa11c --- /dev/null +++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java @@ -0,0 +1,41 @@ +package de.ozgcloud.nachrichten.antragraum; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; + +import de.ozgcloud.nachrichten.NachrichtenManagerProperties; +import de.ozgcloud.nachrichten.antragraum.AntragraumProperties; +import de.ozgcloud.nachrichten.antragraum.AntragraumService; + +class AntragraumServiceTest { + + @InjectMocks + private AntragraumService service; + + @Mock + private AntragraumProperties properties; + @Mock + private NachrichtenManagerProperties nachrichtenManagerProperties; + + @Nested + class TestGetAntragsraumUrl { + + private static final String URL = "url"; + + @Test + void shouldReturnUrl() { + when(properties.getUrl()).thenReturn(URL); + + var url = service.getAntragsraumUrl(); + + assertThat(url).isEqualTo(URL); + } + + } + +} \ No newline at end of file diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/GrpcNachrichtTestFactory.java b/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcNachrichtTestFactory.java similarity index 74% rename from src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/GrpcNachrichtTestFactory.java rename to src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcNachrichtTestFactory.java index cfc6c49d98db376c5f5978f1bbf18268c0adc975..1218f303b5e0c3dd25a8d11b30a7aef43adfb0af 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/GrpcNachrichtTestFactory.java +++ b/src/test/java/de/ozgcloud/nachrichten/antragraum/GrpcNachrichtTestFactory.java @@ -1,6 +1,7 @@ -package de.ozgcloud.nachrichten.postfach.antragsraum; +package de.ozgcloud.nachrichten.antragraum; import de.ozgcloud.info.nachricht.GrpcNachricht; +import de.ozgcloud.nachrichten.info.InfoManagerRequestTestFactory; import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory; import de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory; @@ -15,6 +16,6 @@ public class GrpcNachrichtTestFactory { .setNachrichtId(PostfachNachrichtTestFactory.ID) .setVorgangId(MessageTestFactory.VORGANG_ID) .setPostfachId(MessageTestFactory.POSTFACH_ID) - .setNachrichtenListUrl(InfomanagerNachrichtTestFactory.NACHRICHTEN_MANAGER_URL); + .setNachrichtenListUrl(InfoManagerRequestTestFactory.NACHRICHTEN_MANAGER_URL); } } diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerRemoteServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/info/InfoManagerRemoteServiceTest.java similarity index 82% rename from src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerRemoteServiceTest.java rename to src/test/java/de/ozgcloud/nachrichten/info/InfoManagerRemoteServiceTest.java index 6878e54916b0a82e922ad2f4eb9a1d7ff8d043b6..1410dd83c2d5f6418cbe4b408f91de93a55356af 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerRemoteServiceTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/info/InfoManagerRemoteServiceTest.java @@ -1,6 +1,7 @@ -package de.ozgcloud.nachrichten.postfach.antragsraum; +package de.ozgcloud.nachrichten.info; import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import org.junit.jupiter.api.BeforeEach; @@ -15,11 +16,11 @@ import de.ozgcloud.info.nachricht.GrpcNewNachrichtReply; import de.ozgcloud.info.nachricht.GrpcNewNachrichtRequest; import de.ozgcloud.info.nachricht.NachrichtServiceGrpc.NachrichtServiceBlockingStub; -class InfomanagerRemoteServiceTest { +class InfoManagerRemoteServiceTest { @Spy @InjectMocks - private InfomanagerRemoteService service; + private InfoManagerRemoteService service; @Mock private NachrichtServiceBlockingStub nachrichtServiceStub; @@ -59,7 +60,7 @@ class InfomanagerRemoteServiceTest { } private String sendNotification() { - return service.sendNotification(InfomanagerNachrichtTestFactory.create()); + return service.sendNotification(InfoManagerRequestTestFactory.create()); } } @@ -76,7 +77,7 @@ class InfomanagerRemoteServiceTest { @Test void shouldCallMapper() { - var nachricht = InfomanagerNachrichtTestFactory.create(); + var nachricht = InfoManagerRequestTestFactory.create(); service.buildNachrichtRequest(nachricht); @@ -85,7 +86,7 @@ class InfomanagerRemoteServiceTest { @Test void shouldSetNachricht() { - var grpcRequest = service.buildNachrichtRequest(InfomanagerNachrichtTestFactory.create()); + var grpcRequest = service.buildNachrichtRequest(InfoManagerRequestTestFactory.create()); assertThat(grpcRequest.getNachricht()).isEqualTo(grpcNachricht); } diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerNachrichtTestFactory.java b/src/test/java/de/ozgcloud/nachrichten/info/InfoManagerRequestTestFactory.java similarity index 56% rename from src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerNachrichtTestFactory.java rename to src/test/java/de/ozgcloud/nachrichten/info/InfoManagerRequestTestFactory.java index 7b47d52376c6391fa7b44864c649617275e8d6fc..0690a65817010332a7bb2a68ad277f0d57192777 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerNachrichtTestFactory.java +++ b/src/test/java/de/ozgcloud/nachrichten/info/InfoManagerRequestTestFactory.java @@ -1,18 +1,18 @@ -package de.ozgcloud.nachrichten.postfach.antragsraum; +package de.ozgcloud.nachrichten.info; import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory; -import de.ozgcloud.nachrichten.postfach.antragsraum.InfomanagerNachricht.InfomanagerNachrichtBuilder; import de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory; -public class InfomanagerNachrichtTestFactory { +public class InfoManagerRequestTestFactory { public static final String NACHRICHTEN_MANAGER_URL = "nachrichten-manager"; - public static InfomanagerNachricht create() { + + public static InfoManagerRequest create() { return createBuilder().build(); } - private static InfomanagerNachrichtBuilder createBuilder() { - return InfomanagerNachricht.builder() + private static InfoManagerRequest.InfoManagerRequestBuilder createBuilder() { + return InfoManagerRequest.builder() .nachrichtId(PostfachNachrichtTestFactory.ID) .vorgangId(MessageTestFactory.VORGANG_ID) .postfachId(MessageTestFactory.POSTFACH_ID) diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/AntragsraumServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/info/InfoManagerServiceTest.java similarity index 53% rename from src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/AntragsraumServiceTest.java rename to src/test/java/de/ozgcloud/nachrichten/info/InfoManagerServiceTest.java index 6ec78ef404ed8ad4364a711eecbc8bfa7f8d7d64..95e41db14745b4268f4154f0c7d9a2cee28d907c 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/AntragsraumServiceTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/info/InfoManagerServiceTest.java @@ -1,7 +1,8 @@ -package de.ozgcloud.nachrichten.postfach.antragsraum; +package de.ozgcloud.nachrichten.info; import static org.assertj.core.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import org.junit.jupiter.api.Nested; @@ -17,37 +18,19 @@ import de.ozgcloud.nachrichten.postfach.PostfachNachricht; import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory; import de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory; -class AntragsraumServiceTest { +class InfoManagerServiceTest { @Spy @InjectMocks - private AntragsraumService service; + private InfoManagerService service; @Mock - private AntragsraumProperties properties; + private InfoManagerRemoteService infomanagerRemoteService; @Mock private NachrichtenManagerProperties nachrichtenManagerProperties; - @Mock - private InfomanagerRemoteService infomanagerRemoteService; @Nested - class TestGetAntragsraumUrl { - - private static final String URL = "url"; - - @Test - void shouldReturnUrl() { - when(properties.getUrl()).thenReturn(URL); - - var url = service.getAntragsraumUrl(); - - assertThat(url).isEqualTo(URL); - } - - } - - @Nested - class TestNotifyAntragsraum { + class TestNotifyInfoManager { private static final String NACHRICHTEN_MANAGER_URL = "nachrichtenManagerUrl"; @@ -55,17 +38,17 @@ class AntragsraumServiceTest { @Test void shouldCallBuildInfomanagerNachricht() { - service.notifyAntragsraum(postfachNachricht); + service.notifyInfoManager(postfachNachricht); - verify(service).builInfomanagerNachricht(postfachNachricht); + verify(service).builInfomanagerRequest(postfachNachricht); } @Test void shouldCallInfoManagerRemoteService() { - var infomanagerNachricht = InfomanagerNachrichtTestFactory.create(); - doReturn(infomanagerNachricht).when(service).builInfomanagerNachricht(any()); + var infomanagerNachricht = InfoManagerRequestTestFactory.create(); + doReturn(infomanagerNachricht).when(service).builInfomanagerRequest(any()); - service.notifyAntragsraum(postfachNachricht); + service.notifyInfoManager(postfachNachricht); verify(infomanagerRemoteService).sendNotification(infomanagerNachricht); } @@ -75,7 +58,7 @@ class AntragsraumServiceTest { var causeException = new RuntimeException(); when(infomanagerRemoteService.sendNotification(any())).thenThrow(causeException); - var exception = assertThrows(PostfachException.class, () -> service.notifyAntragsraum(postfachNachricht)); + var exception = assertThrows(PostfachException.class, () -> service.notifyInfoManager(postfachNachricht)); assertThat(exception.getMessageCode()).isEqualTo(PostfachMessageCode.PROCESS_FAILED_MESSAGE_CODE); } @@ -84,38 +67,38 @@ class AntragsraumServiceTest { @Test void shouldSetNachrichtId() { - var infomanagerNachricht = buildInfomanagerNachricht(); + var request = buildInfomanagerNachricht(); - assertThat(infomanagerNachricht.getNachrichtId()).isEqualTo(PostfachNachrichtTestFactory.ID); + assertThat(request.getNachrichtId()).isEqualTo(PostfachNachrichtTestFactory.ID); } @Test void shouldSetVorgangId() { - var infomanagerNachricht = buildInfomanagerNachricht(); + var request = buildInfomanagerNachricht(); - assertThat(infomanagerNachricht.getVorgangId()).isEqualTo(MessageTestFactory.VORGANG_ID); + assertThat(request.getVorgangId()).isEqualTo(MessageTestFactory.VORGANG_ID); } @Test void shouldSetPostfachId() { - var infomanagerNachricht = buildInfomanagerNachricht(); + var request = buildInfomanagerNachricht(); - assertThat(infomanagerNachricht.getPostfachId()).isEqualTo(MessageTestFactory.POSTFACH_ID); + assertThat(request.getPostfachId()).isEqualTo(MessageTestFactory.POSTFACH_ID); } @Test void shouldSetNachrichtenManagerUrl() { when(nachrichtenManagerProperties.getUrl()).thenReturn(NACHRICHTEN_MANAGER_URL); - var infomanagerNachricht = buildInfomanagerNachricht(); + var request = buildInfomanagerNachricht(); - assertThat(infomanagerNachricht.getNachrichtenManagerUrl()).isEqualTo(NACHRICHTEN_MANAGER_URL); + assertThat(request.getNachrichtenManagerUrl()).isEqualTo(NACHRICHTEN_MANAGER_URL); } - private InfomanagerNachricht buildInfomanagerNachricht() { - return service.builInfomanagerNachricht(postfachNachricht); + private InfoManagerRequest buildInfomanagerNachricht() { + return service.builInfomanagerRequest(postfachNachricht); } } - } -} \ No newline at end of file + } +} diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerNachrichtMapperTest.java b/src/test/java/de/ozgcloud/nachrichten/info/InfomanagerNachrichtMapperTest.java similarity index 80% rename from src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerNachrichtMapperTest.java rename to src/test/java/de/ozgcloud/nachrichten/info/InfomanagerNachrichtMapperTest.java index 0652a6a600024c2715674496ee81d70e04fd2cd3..a9d67291fc58a3b091205f14bd4d6411e02cd925 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/antragsraum/InfomanagerNachrichtMapperTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/info/InfomanagerNachrichtMapperTest.java @@ -1,4 +1,4 @@ -package de.ozgcloud.nachrichten.postfach.antragsraum; +package de.ozgcloud.nachrichten.info; import static org.assertj.core.api.Assertions.*; @@ -38,10 +38,10 @@ class InfomanagerNachrichtMapperTest { void shouldMapNachrichtenManagerUrl() { var result = map(); - assertThat(result.getNachrichtenListUrl()).isEqualTo(InfomanagerNachrichtTestFactory.NACHRICHTEN_MANAGER_URL); + assertThat(result.getNachrichtenListUrl()).isEqualTo(InfoManagerRequestTestFactory.NACHRICHTEN_MANAGER_URL); } private GrpcNachricht map() { - return mapper.toGrpc(InfomanagerNachrichtTestFactory.create()); + return mapper.toGrpc(InfoManagerRequestTestFactory.create()); } } \ No newline at end of file diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMapperTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMapperTest.java index 77123d89d099b07baccedc7796d0464e96985bbe..fb1d7eecd2a43dee1fddb15de49a71bb578b7e4a 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMapperTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachMapperTest.java @@ -2,7 +2,6 @@ package de.ozgcloud.nachrichten.postfach; import static org.assertj.core.api.Assertions.*; -import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mapstruct.factory.Mappers; diff --git a/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachServiceTest.java b/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachServiceTest.java index 3742a171770f47c099a2518f11489f7c7f966a29..495a14faa0c0a0889dae79daf0d11a6703860748 100644 --- a/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachServiceTest.java +++ b/src/test/java/de/ozgcloud/nachrichten/postfach/PostfachServiceTest.java @@ -48,11 +48,13 @@ import org.mockito.Mock; import org.mockito.Spy; import org.springframework.boot.logging.LogLevel; import org.springframework.context.ApplicationEventPublisher; +import org.springframework.test.util.ReflectionTestUtils; +import de.ozgcloud.nachrichten.antragraum.AntragraumService; import de.ozgcloud.nachrichten.attributes.ClientAttributeService; +import de.ozgcloud.nachrichten.info.InfoManagerService; import de.ozgcloud.nachrichten.postfach.PostfachNachricht.Direction; import de.ozgcloud.nachrichten.postfach.PostfachNachricht.ReplyOption; -import de.ozgcloud.nachrichten.postfach.antragsraum.AntragsraumService; import de.ozgcloud.nachrichten.postfach.osi.MessageAttachmentService; import de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory; import de.ozgcloud.nachrichten.postfach.osi.OsiPostfachServerProcessException; @@ -83,8 +85,10 @@ class PostfachServiceTest { @Mock private CurrentUserService userService; - @Mock - private AntragsraumService antragsraumService; + @Spy + private Optional<AntragraumService> antragsraumService = Optional.of(mock(AntragraumService.class)); + @Spy + private Optional<InfoManagerService> infomanagerService = Optional.of(mock(InfoManagerService.class)); static final String COMMAND_ID = UUID.randomUUID().toString(); static final String USER_ID = UUID.randomUUID().toString(); @@ -256,7 +260,7 @@ class PostfachServiceTest { service.processForAntragsraum(mail); - verify(antragsraumService).notifyAntragsraum(mail); + verify(infomanagerService.get()).notifyInfoManager(mail); } @Test @@ -314,7 +318,7 @@ class PostfachServiceTest { @Test void shouldReturnEmptyIfNoAntragsraum() { - doReturn(Optional.empty()).when(service).getAntragsraumService(); + ReflectionTestUtils.setField(service, "antragraumService", Optional.empty()); var result = adjustMail(); @@ -325,7 +329,7 @@ class PostfachServiceTest { void shouldAdjustMailBody() { when(mail.toBuilder()).thenReturn(PostfachNachrichtTestFactory.createBuilder()); var expectedMailBody = "Antragsraum Text"; - when(antragsraumService.getUserNotificationText()).thenReturn(expectedMailBody); + when(antragsraumService.get().getUserNotificationText()).thenReturn(expectedMailBody); var result = adjustMail();