diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserRemoteService.java b/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserRemoteService.java index e9000a152dc06d12a0801f5f934e31ec6eba2aa0..86581748b1db00446918a5015718a486a2192ac9 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserRemoteService.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserRemoteService.java @@ -68,22 +68,22 @@ public class UserRemoteService { } } - public Optional<UserProfile> getUser(UserId userId) { + public UserProfile getUser(UserId userId) { return executeHandlingException(() -> getUserById(userId)); } - private <T> Optional<T> executeHandlingException(Supplier<T> runnable) { + private <T> T executeHandlingException(Supplier<T> runnable) { try { - return Optional.of(runnable.get()); + return runnable.get(); } catch (HttpClientErrorException e) { if (e.getStatusCode() == HttpStatus.NOT_FOUND) { - return Optional.empty(); + return null; } throw new ServiceUnavailableException(MessageCode.USER_MANAGER_SERVICE_UNAVAILABLE, e); } } - <T> UserProfile getUserById(UserId userId) { + UserProfile getUserById(UserId userId) { return buildUser(getBodyMap(doExchange(userId))); } diff --git a/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserService.java b/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserService.java index 80d16167164f249df9b11e6a1103dff2f7c67dfc..c22c0c844562332f27dabfa117e4813dcc24eed5 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserService.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/common/user/UserService.java @@ -1,7 +1,5 @@ package de.itvsh.goofy.common.user; -import java.util.Optional; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -11,7 +9,7 @@ public class UserService { @Autowired private UserRemoteService remoteService; - public Optional<UserProfile> getById(UserId userId) { + public UserProfile getById(UserId userId) { return remoteService.getUser(userId); } } \ No newline at end of file diff --git a/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachMailService.java b/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachMailService.java index b3babfa1fd3e160a26bd8d167e2e0447c59d3f7e..e871af9489874014f4ae7030e6c278e7c4d1a21b 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachMailService.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachMailService.java @@ -38,7 +38,6 @@ import de.itvsh.goofy.common.binaryfile.BinaryFileService; import de.itvsh.goofy.common.binaryfile.FileId; import de.itvsh.goofy.common.errorhandling.ResourceNotFoundException; import de.itvsh.goofy.common.file.OzgFile; -import de.itvsh.goofy.common.user.UserId; import de.itvsh.goofy.common.user.UserService; import de.itvsh.goofy.vorgang.VorgangWithEingang; import lombok.extern.log4j.Log4j2; @@ -47,8 +46,6 @@ import lombok.extern.log4j.Log4j2; @Service class PostfachMailService { - static final String FALLBACK_USER_NAME = "Unbekannter Benutzer"; - private Boolean isPostfachConfigured = null; @Autowired @@ -109,7 +106,7 @@ class PostfachMailService { } List<FileId> getFileIdsFromAllAttachments(Stream<PostfachMail> postfachMails) { - return postfachMails.map(postfachMail -> postfachMail.getAttachments()) + return postfachMails.map(PostfachMail::getAttachments) .flatMap(Collection::stream) .toList(); } @@ -118,16 +115,10 @@ class PostfachMailService { Map<FileId, String> ozgFileIdOzgFileMap) { return PostfachNachrichtPdfData.builder() .createdAt(postfachNachricht.getCreatedAt()) - .createdByName(getUserName(postfachNachricht.getCreatedBy())) + .user(userService.getById(postfachNachricht.getCreatedBy())) .mailBody(postfachNachricht.getMailBody()) .subject(postfachNachricht.getSubject()) .attachmentNames(postfachNachricht.getAttachments().stream().map(ozgFileIdOzgFileMap::get).toList()) .build(); } - - String getUserName(UserId userId) { - return userService.getById(userId) - .map(user -> String.format("%s %s", user.getFirstName(), user.getLastName())) - .orElseGet(() -> FALLBACK_USER_NAME); - } } \ No newline at end of file diff --git a/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfData.java b/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfData.java index 0ccec03a6d3e0bbed04a499f541d491f0abefc99..4e645f2c17f2823c6b7a691df7d5a276b86011d1 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfData.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfData.java @@ -3,6 +3,7 @@ package de.itvsh.goofy.postfach; import java.time.ZonedDateTime; import java.util.List; +import de.itvsh.goofy.common.user.UserProfile; import lombok.Builder; import lombok.Getter; import lombok.Setter; @@ -13,7 +14,7 @@ import lombok.Setter; class PostfachNachrichtPdfData { private ZonedDateTime createdAt; - private String createdByName; + private UserProfile user; private String subject; private String mailBody; diff --git a/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachNachrichtenPdfService.java b/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachNachrichtenPdfService.java index 4994cdfa3319a2e7900800ee4d4b6200c3e70b48..653b6eb072f294477cb14e8c3fa9e25979743aaa 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachNachrichtenPdfService.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachNachrichtenPdfService.java @@ -35,6 +35,8 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.Resource; import org.springframework.stereotype.Service; +import de.itvsh.goofy.common.user.UserProfile; +import de.itvsh.goofy.vorgang.Antragsteller; import de.itvsh.goofy.vorgang.VorgangWithEingang; import de.itvsh.kop.common.errorhandling.TechnicalException; import de.itvsh.kop.common.pdf.PdfService; @@ -44,6 +46,9 @@ class PostfachNachrichtenPdfService { static final String PDF_TEMPLATE_PATH = "classpath:fop/postfach-nachrichten.xsl"; + static final String FALLBACK_USER_NAME = "Unbekannter Benutzer"; + + // TODO Auf Konstante mit Locale umstellen private static final DateTimeFormatter CREATED_AT_FORMATTER = DateTimeFormatter.ofPattern("dd.MM.yyyy"); @Autowired @@ -67,24 +72,20 @@ class PostfachNachrichtenPdfService { PostfachNachrichtenPdfModel buildModel(VorgangWithEingang vorgang, Stream<PostfachNachrichtPdfData> postfachNachrichten) { var pdfModelBuilder = PostfachNachrichtenPdfModel.builder().vorgangNummer(vorgang.getNummer()).vorgangName(vorgang.getName()); - mapAntragsteller(pdfModelBuilder, vorgang); + Optional.ofNullable(vorgang.getEingang().getAntragsteller()).ifPresent(antragsteller -> mapAntragsteller(pdfModelBuilder, antragsteller)); pdfModelBuilder.nachrichten(postfachNachrichten.map(this::mapPostfachNachricht).toList()); return pdfModelBuilder.build(); } - void mapAntragsteller(PostfachNachrichtenPdfModel.PostfachNachrichtenPdfModelBuilder modelBuilder, - VorgangWithEingang vorgang) { - Optional.ofNullable(vorgang.getEingang().getAntragsteller()).ifPresent(antragsteller -> { - modelBuilder - .antragstellerAnrede(antragsteller.getAnrede()) - .antragstellerVorname(antragsteller.getVorname()) - .antragstellerNachname(antragsteller.getNachname()) - .antragstellerStrasse(antragsteller.getStrasse()) - .antragstellerHausnummer(antragsteller.getHausnummer()) - .antragstellerPlz(antragsteller.getPlz()) - .antragstellerOrt(antragsteller.getOrt()); - }); + void mapAntragsteller(PostfachNachrichtenPdfModel.PostfachNachrichtenPdfModelBuilder modelBuilder, Antragsteller antragsteller) { + modelBuilder.antragstellerAnrede(antragsteller.getAnrede()) + .antragstellerVorname(antragsteller.getVorname()) + .antragstellerNachname(antragsteller.getNachname()) + .antragstellerStrasse(antragsteller.getStrasse()) + .antragstellerHausnummer(antragsteller.getHausnummer()) + .antragstellerPlz(antragsteller.getPlz()) + .antragstellerOrt(antragsteller.getOrt()); } PostfachNachrichtenPdfModel.Nachricht mapPostfachNachricht(PostfachNachrichtPdfData postfachmail) { @@ -92,8 +93,16 @@ class PostfachNachrichtenPdfService { .subject(postfachmail.getSubject()) .mailBody(postfachmail.getMailBody()) .createdAt(CREATED_AT_FORMATTER.format(postfachmail.getCreatedAt())) - .createdBy(postfachmail.getCreatedByName()) + .createdBy(buildUserName(postfachmail.getUser())) .attachments(postfachmail.getAttachmentNames()) .build(); } + + String buildUserName(UserProfile userProfile) { + return Optional.ofNullable(userProfile).map(this::formatUserName).orElseGet(() -> FALLBACK_USER_NAME); + } + + private String formatUserName(UserProfile user) { + return String.format("%s %s", user.getFirstName(), user.getLastName()); + } } \ No newline at end of file diff --git a/goofy-server/src/test/java/de/itvsh/goofy/common/user/UserRemoteServiceTest.java b/goofy-server/src/test/java/de/itvsh/goofy/common/user/UserRemoteServiceTest.java index 351852b2cc46eb1075512abc7a9772859386b97a..11858b85105343747ee306bf2d2c1ecaf9afc15b 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/common/user/UserRemoteServiceTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/common/user/UserRemoteServiceTest.java @@ -159,9 +159,8 @@ class UserRemoteServiceTest { void shouldReturnUser() { var loadedUser = service.getUser(UserProfileTestFactory.ID); - assertThat(loadedUser).isPresent(); - assertThat(loadedUser.get().getFirstName()).isEqualTo(UserProfileTestFactory.FIRSTNAME); - assertThat(loadedUser.get().getLastName()).isEqualTo(UserProfileTestFactory.LASTNAME); + assertThat(loadedUser.getFirstName()).isEqualTo(UserProfileTestFactory.FIRSTNAME); + assertThat(loadedUser.getLastName()).isEqualTo(UserProfileTestFactory.LASTNAME); } } @@ -188,7 +187,7 @@ class UserRemoteServiceTest { var user = service.getUser(UserProfileTestFactory.ID); - assertThat(user).isEmpty(); + assertThat(user).isNull(); } } } diff --git a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachMailControllerTest.java b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachMailControllerTest.java index 9a1307ded851631be7a49cc4bb7f59dc1102efe6..684c2c7be1a7fd0946f0798c72318be505ca0160 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachMailControllerTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachMailControllerTest.java @@ -58,6 +58,7 @@ import de.itvsh.goofy.vorgang.VorgangController; import de.itvsh.goofy.vorgang.VorgangHeaderTestFactory; import de.itvsh.goofy.vorgang.VorgangWithEingang; import de.itvsh.goofy.vorgang.VorgangWithEingangTestFactory; +import lombok.SneakyThrows; class PostfachMailControllerTest { @@ -131,21 +132,21 @@ class PostfachMailControllerTest { } @Test - void shouldGetVorgang() throws Exception { + void shouldGetVorgang() { doRequest(); verify(vorgangController).getVorgang(VorgangHeaderTestFactory.ID); } @Test - void shouldCallService() throws Exception { + void shouldCallService() { doRequest(); verify(service).getAllAsPdf(eq(vorgang), any(OutputStream.class)); } @Test - void shouldBuildResponseEntity() throws Exception { + void shouldBuildResponseEntity() { doReturn(streamingBody).when(controller).createDownloadStreamingBody(vorgang); doRequest(); @@ -153,8 +154,9 @@ class PostfachMailControllerTest { verify(controller).buildResponseEntity(vorgang, streamingBody); } + @SneakyThrows @Test - void shouldReturnResponse() throws Exception { + void shouldReturnResponse() { doReturn(streamingBody).when(controller).createDownloadStreamingBody(vorgang); doRequest() @@ -164,7 +166,8 @@ class PostfachMailControllerTest { .andExpect(content().contentType(MediaType.APPLICATION_PDF)); } - private ResultActions doRequest() throws Exception { + @SneakyThrows + private ResultActions doRequest() { return mockMvc .perform(get(PostfachMailController.PATH + "?" + PostfachMailController.PARAM_VORGANG_ID + "=" + VorgangHeaderTestFactory.ID) .accept(MediaType.APPLICATION_PDF_VALUE)) diff --git a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachMailServiceTest.java b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachMailServiceTest.java index 05d403ffe815c2af53a3730516c253dbc0bae049..8199cc2d152770910874d58c0f1a8f42ad3e4189 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachMailServiceTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachMailServiceTest.java @@ -49,6 +49,7 @@ import de.itvsh.goofy.common.errorhandling.ResourceNotFoundException; import de.itvsh.goofy.common.file.OzgFile; import de.itvsh.goofy.common.file.OzgFileTestFactory; import de.itvsh.goofy.common.user.UserId; +import de.itvsh.goofy.common.user.UserProfile; import de.itvsh.goofy.common.user.UserProfileTestFactory; import de.itvsh.goofy.common.user.UserService; import de.itvsh.goofy.vorgang.VorgangHeaderTestFactory; @@ -236,16 +237,18 @@ class PostfachMailServiceTest { @Nested class TestBuildPostfachNachrichtPdfData { + private final UserProfile user = UserProfileTestFactory.create(); + @BeforeEach void mock() { - doReturn(UserProfileTestFactory.FULLNAME).when(service).getUserName(any(UserId.class)); + when(userService.getById(any(UserId.class))).thenReturn(user); } @Test - void shouldCallGetUserName() { + void shouldCallUserService() { buildPostfachNachrichtPdfData(); - verify(service).getUserName(UserProfileTestFactory.ID); + verify(userService).getById(UserProfileTestFactory.ID); } @Test @@ -259,7 +262,7 @@ class PostfachMailServiceTest { void shouldHaveSetCreatedByName() { var postfachNachricht = buildPostfachNachrichtPdfData(); - assertThat(postfachNachricht.getCreatedByName()).isEqualTo(UserProfileTestFactory.FULLNAME); + assertThat(postfachNachricht.getUser()).isEqualTo(user); } @Test @@ -307,35 +310,5 @@ class PostfachMailServiceTest { assertThat(fileIds).isEmpty(); } } - - @DisplayName("get user name") - @Nested - class TestGetUserName { - - @Test - void shouldCallUserService() { - service.getUserName(UserProfileTestFactory.ID); - - verify(userService).getById(UserProfileTestFactory.ID); - } - - @Test - void shouldReturnFullNameIfNotNull() { - when(userService.getById(any(UserId.class))).thenReturn(Optional.of(UserProfileTestFactory.create())); - - var userName = service.getUserName(UserProfileTestFactory.ID); - - assertThat(userName).isEqualTo(UserProfileTestFactory.FIRSTNAME + " " + UserProfileTestFactory.LASTNAME); - } - - @Test - void shouldReturnFallbackNameOnNull() { - when(userService.getById(any(UserId.class))).thenReturn(Optional.empty()); - - var userName = service.getUserName(UserProfileTestFactory.ID); - - assertThat(userName).isEqualTo(PostfachMailService.FALLBACK_USER_NAME); - } - } } } \ No newline at end of file diff --git a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfDataTestFactory.java b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfDataTestFactory.java index c19485c2e753cafcbb34ede5df76e1e0c2653405..d223c6ede8ef2dc5ab1197bb60cad94dc386e879 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfDataTestFactory.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfDataTestFactory.java @@ -14,7 +14,7 @@ public class PostfachNachrichtPdfDataTestFactory { public static PostfachNachrichtPdfData.PostfachNachrichtPdfDataBuilder createBuilder() { return PostfachNachrichtPdfData.builder() .createdAt(PostfachMailTestFactory.CREATED_AT) - .createdByName(UserProfileTestFactory.FULLNAME) + .user(UserProfileTestFactory.create()) .subject(PostfachMailTestFactory.SUBJECT) .mailBody(PostfachMailTestFactory.MAIL_BODY) .attachmentNames(List.of(BinaryFileTestFactory.NAME)); diff --git a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtenPdfServiceITCase.java b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtenPdfServiceITCase.java index de548ce1ac2508b97074fb1cf8aa6196f0453f13..50370c2643e8f6cfde192cce6545851544469b81 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtenPdfServiceITCase.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtenPdfServiceITCase.java @@ -32,7 +32,6 @@ import java.io.FileOutputStream; import java.io.OutputStream; import java.util.Collections; import java.util.List; -import java.util.Optional; import java.util.stream.Stream; import org.junit.jupiter.api.BeforeEach; @@ -65,7 +64,7 @@ class PostfachNachrichtenPdfServiceITCase { @BeforeEach void mock() { - when(userRemoteService.getUser(any(UserId.class))).thenReturn(Optional.of(UserProfileTestFactory.create())); + when(userRemoteService.getUser(any(UserId.class))).thenReturn(UserProfileTestFactory.create()); } @SneakyThrows diff --git a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtenPdfServiceTest.java b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtenPdfServiceTest.java index 363a0c15236853de8b5bc9b0e5bbb4846e72cc0d..18ab6b290a0dd6138e94afd691fd5a0964be9ab6 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtenPdfServiceTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtenPdfServiceTest.java @@ -32,7 +32,6 @@ import java.io.InputStream; import java.io.OutputStream; import java.util.stream.Stream; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -45,8 +44,8 @@ import org.springframework.util.ReflectionUtils; import de.itvsh.goofy.common.binaryfile.BinaryFileTestFactory; import de.itvsh.goofy.common.user.UserProfileTestFactory; +import de.itvsh.goofy.postfach.PostfachNachrichtenPdfModel.Nachricht; import de.itvsh.goofy.vorgang.AntragstellerTestFactory; -import de.itvsh.goofy.vorgang.EingangTestFactory; import de.itvsh.goofy.vorgang.VorgangHeaderTestFactory; import de.itvsh.goofy.vorgang.VorgangWithEingangTestFactory; import de.itvsh.kop.common.errorhandling.TechnicalException; @@ -139,75 +138,61 @@ class PostfachNachrichtenPdfServiceTest { @Nested class TestMapAntragsteller { - @Test - void shouldNotThrowExceptionIfMissing() { - var vorgang = VorgangWithEingangTestFactory.createBuilder().eingang( - EingangTestFactory.createBuilder().antragsteller(null).build()).build(); - - Assertions.assertDoesNotThrow(() -> service.mapAntragsteller(PostfachNachrichtenPdfModel.builder(), vorgang)); - } - @Test void shouldMapAntragstellerAnrede() { - var modelBuilder = PostfachNachrichtenPdfModel.builder(); - - service.mapAntragsteller(modelBuilder, VorgangWithEingangTestFactory.create()); + var modelBuilder = mapAntragsteller(); assertThat(modelBuilder.build().getAntragstellerAnrede()).isEqualTo(AntragstellerTestFactory.ANREDE); } @Test void shouldMapAntragstellerVorname() { - var modelBuilder = PostfachNachrichtenPdfModel.builder(); - - service.mapAntragsteller(modelBuilder, VorgangWithEingangTestFactory.create()); + var modelBuilder = mapAntragsteller(); assertThat(modelBuilder.build().getAntragstellerVorname()).isEqualTo(AntragstellerTestFactory.VORNAME); } @Test void shouldMapAntragstellerNachname() { - var modelBuilder = PostfachNachrichtenPdfModel.builder(); - - service.mapAntragsteller(modelBuilder, VorgangWithEingangTestFactory.create()); + var modelBuilder = mapAntragsteller(); assertThat(modelBuilder.build().getAntragstellerNachname()).isEqualTo(AntragstellerTestFactory.NACHNAME); } @Test void shouldMapAntragstellerStrasse() { - var modelBuilder = PostfachNachrichtenPdfModel.builder(); - - service.mapAntragsteller(modelBuilder, VorgangWithEingangTestFactory.create()); + var modelBuilder = mapAntragsteller(); assertThat(modelBuilder.build().getAntragstellerStrasse()).isEqualTo(AntragstellerTestFactory.STRASSE); } @Test void shouldMapAntragstellerHausnummer() { - var modelBuilder = PostfachNachrichtenPdfModel.builder(); - - service.mapAntragsteller(modelBuilder, VorgangWithEingangTestFactory.create()); + var modelBuilder = mapAntragsteller(); assertThat(modelBuilder.build().getAntragstellerHausnummer()).isEqualTo(AntragstellerTestFactory.HAUSNUMMER); } @Test void shouldMapAntragstellerPlz() { - var modelBuilder = PostfachNachrichtenPdfModel.builder(); - - service.mapAntragsteller(modelBuilder, VorgangWithEingangTestFactory.create()); + var modelBuilder = mapAntragsteller(); assertThat(modelBuilder.build().getAntragstellerPlz()).isEqualTo(AntragstellerTestFactory.PLZ); } @Test void shouldMapAntragstellerOrt() { + var modelBuilder = mapAntragsteller(); + + assertThat(modelBuilder.build().getAntragstellerOrt()).isEqualTo(AntragstellerTestFactory.ORT); + } + + private PostfachNachrichtenPdfModel.PostfachNachrichtenPdfModelBuilder mapAntragsteller() { var modelBuilder = PostfachNachrichtenPdfModel.builder(); - service.mapAntragsteller(modelBuilder, VorgangWithEingangTestFactory.create()); + service.mapAntragsteller(modelBuilder, AntragstellerTestFactory.create()); - assertThat(modelBuilder.build().getAntragstellerOrt()).isEqualTo(AntragstellerTestFactory.ORT); + return modelBuilder; } } @@ -217,38 +202,42 @@ class PostfachNachrichtenPdfServiceTest { @Test void shouldMapNachrichtSubject() { - var nachricht = service.mapPostfachNachricht(PostfachNachrichtPdfDataTestFactory.create()); + var nachricht = mapNachricht(); assertThat(nachricht.getSubject()).isEqualTo(PostfachMailTestFactory.SUBJECT); } @Test void shouldMapNachrichtMailBody() { - var nachricht = service.mapPostfachNachricht(PostfachNachrichtPdfDataTestFactory.create()); + var nachricht = mapNachricht(); assertThat(nachricht.getMailBody()).isEqualTo(PostfachMailTestFactory.MAIL_BODY); } @Test void shouldMapNachrichtCreatedAt() { - var nachricht = service.mapPostfachNachricht(PostfachNachrichtPdfDataTestFactory.create()); + var nachricht = mapNachricht(); assertThat(nachricht.getCreatedAt()).isEqualTo("01.01.2000"); } @Test void shouldMapNachrichtCreatedBy() { - var nachricht = service.mapPostfachNachricht(PostfachNachrichtPdfDataTestFactory.create()); + var nachricht = mapNachricht(); assertThat(nachricht.getCreatedBy()).isEqualTo(UserProfileTestFactory.FULLNAME); } @Test void shouldMapNachrichtAttachments() { - var nachricht = service.mapPostfachNachricht(PostfachNachrichtPdfDataTestFactory.create()); + var nachricht = mapNachricht(); assertThat(nachricht.getAttachments()).containsExactly(BinaryFileTestFactory.NAME); } + + private Nachricht mapNachricht() { + return service.mapPostfachNachricht(PostfachNachrichtPdfDataTestFactory.create()); + } } }