diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java index 116ae08168d70b8c5eae218c4af91abcbccea2bf..1a6e45d7ccde89de0e4266d3f89d6d30b18e6d7b 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcService.java @@ -74,7 +74,6 @@ class AntragraumGrpcService extends AntragraumServiceGrpc.AntragraumServiceImplB .sorted(new ZonedDateTimeStringComparator()) .findFirst() .orElseGet(() -> StringUtils.EMPTY); - } private GrpcFindRueckfragenResponse buildFindRueckfragenResponse(Stream<GrpcRueckfrage> rueckfragen) { @@ -93,13 +92,13 @@ class AntragraumGrpcService extends AntragraumServiceGrpc.AntragraumServiceImplB streamObserver.onCompleted(); } - PostfachNachricht getRueckfrage(String samlToken, String postfachNachrichtId) { + Rueckfrage getRueckfrage(String samlToken, String postfachNachrichtId) { return antragraumService.findRueckfragen(samlToken) - .filter(postfachNachricht -> StringUtils.equals(postfachNachricht.getId(), postfachNachrichtId)) + .filter(rueckfrage -> StringUtils.equals(rueckfrage.getId(), postfachNachrichtId)) .toList().getFirst(); } - PostfachNachricht enrichRueckfrageAnswer(PostfachNachricht answer, PostfachNachricht rueckfrage) { + PostfachNachricht enrichRueckfrageAnswer(PostfachNachricht answer, Rueckfrage rueckfrage) { return answer.toBuilder() .vorgangId(rueckfrage.getVorgangId()) .postfachAddress(rueckfrage.getPostfachAddress()) diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java index d9ccf624316bd2b4ae37c8b0b4233da607e0f517..590619caa63460ff45cd15e3bbef96200712b02a 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapper.java @@ -53,12 +53,10 @@ interface AntragraumNachrichtMapper { @Mapping(target = "answersBuilderList", ignore = true) @Mapping(target = "answersList", ignore = true) @Mapping(target = "answersOrBuilderList", ignore = true) - @Mapping(source = "sentAt", target = "sentAt", dateFormat = "yyyy-MM-dd'T'HH:mm:ss") - @Mapping(source = "mailBody", target = "text") - @Mapping(source = "subject", target = "vorgangName") - @Mapping(source = "attachments", target = "attachmentFileIdList") + @Mapping(target = "sentAt", source = "sentAt", dateFormat = "yyyy-MM-dd'T'HH:mm:ss") + @Mapping(target = "attachmentFileIdList", source = "attachments") @Mapping(target = "status", constant = DEFAULT_STATUS) - GrpcRueckfrage toGrpc(PostfachNachricht postfachNachricht); + GrpcRueckfrage toGrpc(Rueckfrage rueckfrage); @Mapping(target = "referencedNachricht", ignore = true) @Mapping(target = "mailBody", source = "answerText") diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java index a8e360bb49179070e1878c31810a10d5f9eac6f0..22a1bee466a6102c0d69999c257992ca1352284c 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/AntragraumService.java @@ -65,6 +65,7 @@ public class AntragraumService { private final AntragraumProperties properties; private final NachrichtenManagerProperties nachrichtenManagerProperties; + private final RueckfrageMapper rueckfrageMapper; @PostConstruct void init() { @@ -86,11 +87,15 @@ public class AntragraumService { return USER_NOTIFICATION_TEMPLATE.formatted(getAntragsraumUrl()); } - public Stream<PostfachNachricht> findRueckfragen(String samlToken) { + public Stream<Rueckfrage> findRueckfragen(String samlToken) { verifyToken(samlToken); var postfachId = decrypter.decryptPostfachId(parser.parse(samlToken)); - return postfachNachrichtService.findRueckfragen(BAYERN_ID, postfachId); + return postfachNachrichtService.findRueckfragen(BAYERN_ID, postfachId).map(this::buildRueckfrage); + } + + Rueckfrage buildRueckfrage(PostfachNachricht postfachNachricht) { + return rueckfrageMapper.toRueckfrage(postfachNachricht); } public String sendRueckfrageAnswer(String samlToken, String rueckfrageId, PostfachNachricht nachricht) { diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/Rueckfrage.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/Rueckfrage.java new file mode 100644 index 0000000000000000000000000000000000000000..dc12793ccdfcf9397501baf7421401dd0477f837 --- /dev/null +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/Rueckfrage.java @@ -0,0 +1,28 @@ +package de.ozgcloud.nachrichten.antragraum; + +import java.time.ZonedDateTime; +import java.util.Collections; +import java.util.List; + +import de.ozgcloud.nachrichten.postfach.PostfachAddress; +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +class Rueckfrage { + + private String id; + private String vorgangId; + private String vorgangName; + + private PostfachAddress postfachAddress; + private ZonedDateTime sentAt; + private ZonedDateTime answeredAt; + private RueckfrageStatus status; + private String text; + + @Builder.Default + private List<String> attachments = Collections.emptyList(); + +} \ No newline at end of file diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/RueckfrageMapper.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/RueckfrageMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..935b819a1e8fe66021143245884a74ed873e2f44 --- /dev/null +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/RueckfrageMapper.java @@ -0,0 +1,20 @@ +package de.ozgcloud.nachrichten.antragraum; + +import org.mapstruct.CollectionMappingStrategy; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.NullValueCheckStrategy; +import org.mapstruct.ReportingPolicy; + +import de.ozgcloud.nachrichten.postfach.PostfachNachricht; + +@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, unmappedSourcePolicy = ReportingPolicy.WARN, unmappedTargetPolicy = ReportingPolicy.WARN, nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS) +interface RueckfrageMapper { + + @Mapping(target = "answeredAt", ignore = true) + @Mapping(target = "status", ignore = true) + @Mapping(target = "text", source = "mailBody") + @Mapping(target = "vorgangName", ignore = true) + Rueckfrage toRueckfrage(PostfachNachricht postfachNachricht); + +} \ No newline at end of file diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/RueckfrageStatus.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/RueckfrageStatus.java new file mode 100644 index 0000000000000000000000000000000000000000..f699acf2180bc847fe9e0c1bc688ac096822e65e --- /dev/null +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/antragraum/RueckfrageStatus.java @@ -0,0 +1,5 @@ +package de.ozgcloud.nachrichten.antragraum; + +enum RueckfrageStatus { + NEU, ANSWERED +} \ No newline at end of file diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/VorgangRemoteService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/common/vorgang/VorgangRemoteService.java similarity index 95% rename from nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/VorgangRemoteService.java rename to nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/common/vorgang/VorgangRemoteService.java index 73342e11305eeb33c6813434e3b5d8203a82ce8b..a95188d09c53bf45594f536f7bb094a43fc9e0fc 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/VorgangRemoteService.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/common/vorgang/VorgangRemoteService.java @@ -21,7 +21,7 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -package de.ozgcloud.nachrichten.postfach; +package de.ozgcloud.nachrichten.common.vorgang; import java.util.Spliterator; import java.util.Spliterators; @@ -31,6 +31,7 @@ import java.util.stream.StreamSupport; import org.springframework.stereotype.Service; import de.ozgcloud.nachrichten.common.grpc.NachrichtenCallContextAttachingInterceptor; +import de.ozgcloud.nachrichten.postfach.FindVorgangIterator; import de.ozgcloud.vorgang.vorgang.GrpcVorgangHeader; import de.ozgcloud.vorgang.vorgang.VorgangServiceGrpc.VorgangServiceBlockingStub; import net.devh.boot.grpc.client.inject.GrpcClient; diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/common/vorgang/VorgangService.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/common/vorgang/VorgangService.java new file mode 100644 index 0000000000000000000000000000000000000000..b512e53a56c2ee2abf66f6fcfe56a112dd9f48ea --- /dev/null +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/common/vorgang/VorgangService.java @@ -0,0 +1,20 @@ +package de.ozgcloud.nachrichten.common.vorgang; + +import java.util.stream.Stream; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import lombok.RequiredArgsConstructor; + +@Service +@RequiredArgsConstructor +public class VorgangService { + + @Qualifier("findVorgangRemoteService") + private final VorgangRemoteService remoteService; + + public Stream<String> findVorgangIds(String servicekontoType, String postfachId) { + return remoteService.findVorgangIds(servicekontoType, postfachId); + } +} diff --git a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImpl.java b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImpl.java index a4d9682eb1ed6ea4437fabfeb3534b35e9ef2515..aedd1434632b2a94e75bf3ee9d9b4a94a4ea7607 100644 --- a/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImpl.java +++ b/nachrichten-manager-server/src/main/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImpl.java @@ -39,6 +39,7 @@ import de.ozgcloud.apilib.common.command.OzgCloudCommand; import de.ozgcloud.apilib.common.command.OzgCloudCommandService; import de.ozgcloud.apilib.vorgang.OzgCloudVorgangId; import de.ozgcloud.nachrichten.NachrichtenManagerConfiguration; +import de.ozgcloud.nachrichten.common.vorgang.VorgangService; @Service @Primary @@ -56,8 +57,7 @@ public class PersistPostfachNachrichtServiceImpl implements PersistPostfachNachr static final String ITEM_FIELD = "item"; @Autowired - @Qualifier("findVorgangRemoteService") - private VorgangRemoteService vorgangRemoteService; + private VorgangService vorgangService; @Autowired @Qualifier(NachrichtenManagerConfiguration.OZG_CLOUD_COMMAND_SERVICE_NAME) @@ -124,7 +124,7 @@ public class PersistPostfachNachrichtServiceImpl implements PersistPostfachNachr @Override public Stream<PostfachNachricht> findRueckfragen(String servicekontoType, String postfachId) { - return vorgangRemoteService.findVorgangIds(servicekontoType, postfachId) + return vorgangService.findVorgangIds(servicekontoType, postfachId) .flatMap(attachedItemRemoteService::findReplyAllowedPostfachNachrichts); } @@ -157,12 +157,12 @@ public class PersistPostfachNachrichtServiceImpl implements PersistPostfachNachr @Override public Stream<PostfachNachricht> findAnswers(String serviceKontoType, String postfachId, String rueckfrageId) { - return findPostfachNachricht(serviceKontoType, postfachId, rueckfrageId) + return findPostfachNachricht(serviceKontoType, postfachId) .filter(postfachNachricht -> hasMatchingReferenceNachrichtId(postfachNachricht, rueckfrageId)); } - private Stream<PostfachNachricht> findPostfachNachricht(String serviceKontoType, String postfachId, String rueckfrageId) { - return vorgangRemoteService.findVorgangIds(serviceKontoType, postfachId).flatMap(attachedItemRemoteService::findByVorgangId); + private Stream<PostfachNachricht> findPostfachNachricht(String serviceKontoType, String postfachId) { + return vorgangService.findVorgangIds(serviceKontoType, postfachId).flatMap(attachedItemRemoteService::findByVorgangId); } private boolean hasMatchingReferenceNachrichtId(PostfachNachricht postfachNachricht, String postfachNachrichtId) { diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java index bb4cb7b49e49718fce1fc129c888e5a237521f0f..e44f7525475c7422eab54ebefeb03c30b31db64a 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumGrpcServiceTest.java @@ -60,15 +60,15 @@ class AntragraumGrpcServiceTest { @BeforeEach void setup() { - when(service.findRueckfragen(any())).thenReturn(Stream.of(PostfachNachrichtTestFactory.create())); - when(nachrichtMapper.toGrpc(any(PostfachNachricht.class))).thenReturn(GrpcRueckfrageTestFactory.create()); + when(service.findRueckfragen(any())).thenReturn(Stream.of(RueckfrageTestFactory.create())); + when(nachrichtMapper.toGrpc(any(Rueckfrage.class))).thenReturn(GrpcRueckfrageTestFactory.create()); } @Test void shouldCallMapper() { grpcService.findRueckfragen(GrpcFindRueckfrageRequestTestFactory.create(), streamObserver); - verify(nachrichtMapper).toGrpc(any(PostfachNachricht.class)); + verify(nachrichtMapper).toGrpc(any(Rueckfrage.class)); } @Test @@ -141,6 +141,7 @@ class AntragraumGrpcServiceTest { @Mock private StreamObserver<GrpcSendRueckfrageAnswerResponse> streamObserver; private PostfachNachricht postfachNachricht = PostfachNachrichtTestFactory.create(); + private Rueckfrage rueckfrage = RueckfrageTestFactory.create(); @BeforeEach void setup() { @@ -148,7 +149,7 @@ class AntragraumGrpcServiceTest { when(service.sendRueckfrageAnswer(anyString(), anyString(), any(PostfachNachricht.class))) .thenReturn(UUID.randomUUID().toString()); doReturn(postfachNachricht).when(grpcService).enrichRueckfrageAnswer(any(), any()); - doReturn(postfachNachricht).when(grpcService).getRueckfrage(any(), any()); + doReturn(rueckfrage).when(grpcService).getRueckfrage(any(), any()); } @Test @@ -170,7 +171,7 @@ class AntragraumGrpcServiceTest { void shouldEnrichPostfachNachricht() { sendRueckfrageAnswer(); - verify(grpcService).enrichRueckfrageAnswer(postfachNachricht, postfachNachricht); + verify(grpcService).enrichRueckfrageAnswer(postfachNachricht, rueckfrage); } @Test @@ -203,14 +204,13 @@ class AntragraumGrpcServiceTest { @Nested class TestGetRueckfrage { - private final PostfachNachricht matchingPostfachNachricht = PostfachNachrichtTestFactory.createBuilder() - .id(GrpcRueckfrageAnswerTestFactory.RUECKFRAGE_ID) + private final Rueckfrage matchingRueckfrage = RueckfrageTestFactory.createBuilder().id(GrpcRueckfrageAnswerTestFactory.RUECKFRAGE_ID) .build(); - private final PostfachNachricht postfachNachricht = PostfachNachrichtTestFactory.create(); + private final Rueckfrage rueckfrage = RueckfrageTestFactory.create(); @BeforeEach void mock() { - when(service.findRueckfragen(any())).thenReturn(Stream.of(postfachNachricht, matchingPostfachNachricht)); + when(service.findRueckfragen(any())).thenReturn(Stream.of(rueckfrage, matchingRueckfrage)); } @Test @@ -224,10 +224,10 @@ class AntragraumGrpcServiceTest { void shouldReturnMatchingPostfachNachricht() { var rueckfrage = getRueckfrage(); - assertThat(rueckfrage).isEqualTo(matchingPostfachNachricht); + assertThat(rueckfrage).isEqualTo(matchingRueckfrage); } - private PostfachNachricht getRueckfrage() { + private Rueckfrage getRueckfrage() { return grpcService.getRueckfrage(GrpcSendRueckfrageAnswerRequestTestFactory.SAML_TOKEN, GrpcRueckfrageAnswerTestFactory.RUECKFRAGE_ID); } @@ -243,7 +243,7 @@ class AntragraumGrpcServiceTest { .sentAt(null) .build(); - private final PostfachNachricht postfachNachrichtRueckfrage = PostfachNachrichtTestFactory.create(); + private final Rueckfrage postfachNachrichtRueckfrage = RueckfrageTestFactory.create(); @Test void shouldSetVorgangId() { diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java index dcf8e12576334ad06dd15a75af23594f76a71cf6..3f0e9e1bb8e40e1f1d7918016dad5cfc2c70ac3d 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumNachrichtMapperTest.java @@ -34,11 +34,10 @@ import de.ozgcloud.nachrichten.postfach.PostfachNachricht; import de.ozgcloud.nachrichten.postfach.PostfachNachricht.Direction; import de.ozgcloud.nachrichten.postfach.PostfachNachricht.ReplyOption; import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory; -import de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory; class AntragraumNachrichtMapperTest { - AntragraumNachrichtMapper mapper = Mappers.getMapper(AntragraumNachrichtMapper.class); + private final AntragraumNachrichtMapper mapper = Mappers.getMapper(AntragraumNachrichtMapper.class); @Nested class TestMapRueckfrage { @@ -47,21 +46,21 @@ class AntragraumNachrichtMapperTest { void shouldMapVorgangId() { var result = map(); - assertThat(result.getVorgangId()).isEqualTo(MessageTestFactory.VORGANG_ID); + assertThat(result.getVorgangId()).isEqualTo(RueckfrageTestFactory.VORGANG_ID); } @Test void shouldMapId() { var result = map(); - assertThat(result.getId()).isEqualTo(PostfachNachrichtTestFactory.ID); + assertThat(result.getId()).isEqualTo(RueckfrageTestFactory.ID); } @Test void shouldMapVorgangName() { var result = map(); - assertThat(result.getVorgangName()).isEqualTo(MessageTestFactory.SUBJECT); + assertThat(result.getVorgangName()).isEqualTo(RueckfrageTestFactory.VORGANG_NAME); } @Test @@ -94,7 +93,7 @@ class AntragraumNachrichtMapperTest { } private GrpcRueckfrage map() { - return mapper.toGrpc(PostfachNachrichtTestFactory.create()); + return mapper.toGrpc(RueckfrageTestFactory.create()); } } diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java index 8ff8ca4b3c7cbf98fca3ac6f6dc9f545fb85afba..4382d69c85209b10fe87480131623306caae665f 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/AntragraumServiceTest.java @@ -5,8 +5,10 @@ import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.util.UUID; +import java.util.stream.Stream; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; @@ -36,6 +38,8 @@ class AntragraumServiceTest { private Saml2Parser parser; @Mock private Saml2Decrypter decrypter; + @Mock + private RueckfrageMapper rueckfrageMapper; @Nested class TestGetAntragsraumUrl { @@ -50,12 +54,17 @@ class AntragraumServiceTest { assertThat(url).isEqualTo(URL); } - } @Nested class TestFindRueckfragen { - static final String SAML_TOKEN = "TOKEN"; + + @Mock + private Response response; + + private static final String SAML_TOKEN = "TOKEN"; + + private final Rueckfrage rueckfrage = RueckfrageTestFactory.create(); @Test void shouldCallVerify() { @@ -73,7 +82,7 @@ class AntragraumServiceTest { @Test void shouldCallDecrypt() { - when(parser.parse(anyString())).thenReturn(mock(Response.class)); + when(parser.parse(anyString())).thenReturn(response); service.findRueckfragen(SAML_TOKEN); @@ -88,6 +97,41 @@ class AntragraumServiceTest { verify(postfachNachrichtService).findRueckfragen(anyString(), anyString()); } + + @Test + void shouldReturnFullFilledValue() { + doReturn(rueckfrage).when(service).buildRueckfrage(any()); + when(decrypter.decryptPostfachId(any())).thenReturn(GrpcFindRueckfrageRequestTestFactory.POSTFACH_ID); + when(postfachNachrichtService.findRueckfragen(any(), any())).thenReturn(Stream.of(PostfachNachrichtTestFactory.create())); + + var rueckfragen = service.findRueckfragen(SAML_TOKEN).toList(); + + assertThat(rueckfragen).containsExactly(rueckfrage); + } + } + + @DisplayName("Build rueckfrage") + @Nested + class TestBuildRueckfrage { + + private final PostfachNachricht postfachNachricht = PostfachNachrichtTestFactory.create(); + private final Rueckfrage rueckfrage = RueckfrageTestFactory.create(); + + @Test + void shouldCallMapper() { + service.buildRueckfrage(postfachNachricht); + + verify(rueckfrageMapper).toRueckfrage(postfachNachricht); + } + + @Test + void shouldReturnFullFilledValue() { + when(rueckfrageMapper.toRueckfrage(any())).thenReturn(rueckfrage); + + var rueckfrage = service.buildRueckfrage(postfachNachricht); + + assertThat(rueckfrage).isEqualTo(rueckfrage); + } } @Nested diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/RueckfrageTestFactory.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/RueckfrageTestFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..3a60a8a4d1f15b5ebe814c10197a92afc8afe8f0 --- /dev/null +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/antragraum/RueckfrageTestFactory.java @@ -0,0 +1,30 @@ +package de.ozgcloud.nachrichten.antragraum; + +import java.util.UUID; + +import com.thedeanda.lorem.LoremIpsum; + +import de.ozgcloud.nachrichten.postfach.PostfachAddressTestFactory; +import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory; + +public class RueckfrageTestFactory { + + public static final String ID = UUID.randomUUID().toString(); + public static final String VORGANG_ID = UUID.randomUUID().toString(); + public static final String VORGANG_NAME = LoremIpsum.getInstance().getName(); + + public static Rueckfrage create() { + return createBuilder().build(); + } + + public static Rueckfrage.RueckfrageBuilder createBuilder() { + return Rueckfrage.builder() + .id(ID) + .vorgangId(VORGANG_ID) + .vorgangName(VORGANG_NAME) + .postfachAddress(PostfachAddressTestFactory.create()) + .sentAt(PostfachNachrichtTestFactory.SENT_AT) + .text(PostfachNachrichtTestFactory.MAIL_BODY) + .attachments(PostfachNachrichtTestFactory.ATTACHMENTS); + } +} diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/common/vorgang/VorgangRemoteServiceTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/common/vorgang/VorgangRemoteServiceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..e7353527ee0a47ce3ed233956b5ac4ce5f0f31de --- /dev/null +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/common/vorgang/VorgangRemoteServiceTest.java @@ -0,0 +1,5 @@ +package de.ozgcloud.nachrichten.common.vorgang; + +class VorgangRemoteServiceTest { + // TODO FILLME TDD +} diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/common/vorgang/VorgangServiceTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/common/vorgang/VorgangServiceTest.java new file mode 100644 index 0000000000000000000000000000000000000000..8ca036ac0393e8e0d245d3b32f9fb14b44c7571b --- /dev/null +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/common/vorgang/VorgangServiceTest.java @@ -0,0 +1,51 @@ +package de.ozgcloud.nachrichten.common.vorgang; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.ArgumentMatchers.*; +import static org.mockito.Mockito.*; + +import java.util.stream.Stream; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; + +import de.ozgcloud.nachrichten.postfach.PostfachNachrichtTestFactory; +import de.ozgcloud.nachrichten.postfach.PostfachTestFactory; + +class VorgangServiceTest { + + @InjectMocks + private VorgangService service; + @Mock + private VorgangRemoteService remoteService; + + @DisplayName("Find vorgangIds") + @Nested + class TestFindVorgangIds { + + private final Stream<String> returnedVorgangIds = Stream.of("1"); + + @BeforeEach + void mock() { + when(remoteService.findVorgangIds(any(), any())).thenReturn(returnedVorgangIds); + } + + @Test + void shouldCallRemoteService() { + service.findVorgangIds(PostfachTestFactory.POSTFACH_TYPE, PostfachNachrichtTestFactory.ID); + + verify(remoteService).findVorgangIds(PostfachTestFactory.POSTFACH_TYPE, PostfachNachrichtTestFactory.ID); + } + + @Test + void shouldReturnValue() { + var vorgangIds = service.findVorgangIds(PostfachTestFactory.POSTFACH_TYPE, PostfachNachrichtTestFactory.ID); + + assertThat(vorgangIds).isEqualTo(returnedVorgangIds); + } + } +} diff --git a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplTest.java b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplTest.java index 4b990f5ff92c8d3c17655ec97045664181c094b5..02d2d73f90b8d8147e58adcb2c19a5117aa37c0f 100644 --- a/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplTest.java +++ b/nachrichten-manager-server/src/test/java/de/ozgcloud/nachrichten/postfach/PersistPostfachNachrichtServiceImplTest.java @@ -21,6 +21,7 @@ import org.mockito.Spy; import de.ozgcloud.apilib.common.command.OzgCloudCommand; import de.ozgcloud.apilib.common.command.OzgCloudCommandId; import de.ozgcloud.apilib.common.command.OzgCloudCommandService; +import de.ozgcloud.nachrichten.common.vorgang.VorgangService; import de.ozgcloud.nachrichten.postfach.osi.MessageTestFactory; class PersistPostfachNachrichtServiceImplTest { @@ -29,7 +30,7 @@ class PersistPostfachNachrichtServiceImplTest { @InjectMocks private PersistPostfachNachrichtServiceImpl service; @Mock - private VorgangRemoteService vorgangRemoteService; + private VorgangService vorgangService; @Mock private OzgCloudCommandService commandService; @Mock @@ -178,7 +179,7 @@ class PersistPostfachNachrichtServiceImplTest { @BeforeEach void mock() { - when(vorgangRemoteService.findVorgangIds(any(), any())).thenReturn(Stream.of(MessageTestFactory.VORGANG_ID)); + when(vorgangService.findVorgangIds(any(), any())).thenReturn(Stream.of(MessageTestFactory.VORGANG_ID)); when(attachedItemRemoteService.findByVorgangId(any())).thenReturn(Stream.of(postfachNachrichtWithNoReferencedNachricht, matchingPostfachNachricht, postfachNachrichtWithNonMatchingReferencedNachricht)); } @@ -187,7 +188,7 @@ class PersistPostfachNachrichtServiceImplTest { void shouldCallVorgangRemoteService() { doFindAnswers().toList(); - verify(vorgangRemoteService).findVorgangIds(serviceKontoType, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE); + verify(vorgangService).findVorgangIds(serviceKontoType, PostfachAddressTestFactory.STRING_BASED_IDENTIFIER_POSTFACH_ID_VALUE); } @Test