diff --git a/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfService.java b/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfService.java index 1e0366f18d84550342d1a72a07c6637497b1b2d4..c4117625a214ec046f0a3d4b2ac38bddbb24d0dd 100644 --- a/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfService.java +++ b/goofy-server/src/main/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfService.java @@ -148,10 +148,18 @@ class PostfachNachrichtPdfService { } private String formatUserName(UserProfile user) { - return String.format("%s %s", user.getFirstName(), user.getLastName()); + return formatForPdf(user.getFirstName(), user.getLastName()); } private String formatAntragstellerName(Antragsteller antragsteller) { - return String.format("%s %s", antragsteller.getVorname(), antragsteller.getNachname()); + return formatForPdf(antragsteller.getVorname(), antragsteller.getNachname()); + } + + private String formatForPdf(String firstName, String lastName) { + return String.format("%s %s", getPdfStringValue(firstName), getPdfStringValue(lastName)).trim(); + } + + private String getPdfStringValue(String value) { + return Optional.ofNullable(StringUtils.trimToNull(value)).orElseGet(() -> StringUtils.EMPTY); } } \ No newline at end of file diff --git a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfServiceTest.java b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfServiceTest.java index 24f10a6e03eea3c428dd38a4a632556c46e00aa6..e396dac31372b3480c8d1b20abae859ccbf983a9 100644 --- a/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfServiceTest.java +++ b/goofy-server/src/test/java/de/itvsh/goofy/postfach/PostfachNachrichtPdfServiceTest.java @@ -32,6 +32,7 @@ import java.io.InputStream; import java.io.OutputStream; import java.util.stream.Stream; +import org.apache.commons.lang3.StringUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -262,9 +263,9 @@ class PostfachNachrichtPdfServiceTest { return service.mapPostfachNachricht(PostfachNachrichtPdfDataTestFactory.create(), AntragstellerTestFactory.create()); } - @DisplayName("for outgoing nachricht") + @DisplayName("for incoming nachricht") @Nested - class TestDirectionOut { + class TestDirectionIn { @DisplayName("build absender name") @Nested @@ -286,12 +287,19 @@ class PostfachNachrichtPdfServiceTest { assertThat(name).isEqualTo(PostfachNachrichtPdfService.FALLBACK_ANTRAGSTELLER_NAME); } + + @Test + void shouldReturnEmptyStringOnNullAntragstellerName() { + var name = service.buildAbsenderName(data, AntragstellerTestFactory.createBuilder().vorname(null).nachname(null).build()); + + assertThat(name).isEqualTo(StringUtils.EMPTY); + } } } - @DisplayName("for incoming nachricht") + @DisplayName("for outgoing nachricht") @Nested - class TestDirectionIn { + class TestDirectionOut { @DisplayName("build absender name") @Nested @@ -302,9 +310,9 @@ class PostfachNachrichtPdfServiceTest { @Test void shouldReturnUserProfileNameIfExists() { - var userName = service.buildAbsenderName(data, AntragstellerTestFactory.create()); + var name = service.buildAbsenderName(data, AntragstellerTestFactory.create()); - assertThat(userName).isEqualTo(UserProfileTestFactory.FIRSTNAME + " " + UserProfileTestFactory.LASTNAME); + assertThat(name).isEqualTo(UserProfileTestFactory.FIRSTNAME + " " + UserProfileTestFactory.LASTNAME); } @Test @@ -315,6 +323,16 @@ class PostfachNachrichtPdfServiceTest { assertThat(name).isEqualTo(PostfachNachrichtPdfService.FALLBACK_USER_NAME); } + + @Test + void shouldReturnEmptyStringOnNullName() { + var data = PostfachNachrichtPdfDataTestFactory.createBuilder().direction(Direction.OUT) + .user(UserProfileTestFactory.createBuilder().firstName(null).lastName(null).build()).build(); + + var name = service.buildAbsenderName(data, AntragstellerTestFactory.create()); + + assertThat(name).isEmpty(); + } } } }