From 812f4834e19f7123207c841dee0efd427b6645d5 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Tue, 22 Nov 2022 11:12:45 +0100
Subject: [PATCH] OZG-2966 trim null to empty string

---
 .../postfach/PostfachNachrichtPdfService.java | 12 ++++++--
 .../PostfachNachrichtPdfServiceTest.java      | 30 +++++++++++++++----
 2 files changed, 34 insertions(+), 8 deletions(-)

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 1e0366f18d..c4117625a2 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 24f10a6e03..e396dac313 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();
+						}
 					}
 				}
 			}
-- 
GitLab