From 203b74a166ec8830b7395ea0e018dfde456861d3 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 19 Feb 2024 13:05:28 +0100
Subject: [PATCH] OZG-4713 OZG-4927 fix export logic for assign user old and
 new value

---
 .../alfa/historie/ExportHistorieService.java  | 19 +++++-
 .../historie/ExportHistorieServiceTest.java   | 68 ++++++++++++++++++-
 2 files changed, 83 insertions(+), 4 deletions(-)

diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/historie/ExportHistorieService.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/historie/ExportHistorieService.java
index 00aad71b66..f6b06c6ed6 100644
--- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/historie/ExportHistorieService.java
+++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/historie/ExportHistorieService.java
@@ -6,6 +6,7 @@ import java.util.stream.Stream;
 import org.springframework.stereotype.Service;
 
 import de.ozgcloud.alfa.common.DateConverter;
+import de.ozgcloud.alfa.common.command.CommandOrder;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
 import de.xoev.xdomea.HistorienProtokollInformationType;
 import lombok.RequiredArgsConstructor;
@@ -27,8 +28,8 @@ public class ExportHistorieService {
 
 	HistorienProtokollInformationType createHistorienProtokollInformationType(VorgangChange vorgangChange) {
 		var historienProtokollInformationType = new HistorienProtokollInformationType();
-		historienProtokollInformationType.setMetadatumAlterWert(vorgangChange.getValueBeforeChange());
-		historienProtokollInformationType.setMetadatumNeuerWert(vorgangChange.getValueAfterChange());
+		historienProtokollInformationType.setMetadatumAlterWert(createValueBeforeChange(vorgangChange));
+		historienProtokollInformationType.setMetadatumNeuerWert(createValueAfterChange(vorgangChange));
 		historienProtokollInformationType.setAkteur(createAkteur(vorgangChange));
 		historienProtokollInformationType.setDatumUhrzeit(DateConverter.toXmlGregorianCalendar(vorgangChange.getFinishedAt()));
 		historienProtokollInformationType.setAktion(vorgangChange.getOrder().name());
@@ -39,4 +40,18 @@ public class ExportHistorieService {
 		return vorgangChange.getCreatedByName() + "; " + vorgangChange.getOrganisationseinheitenId();
 	}
 
+	String createValueBeforeChange(VorgangChange vorgangChange) {
+		if (vorgangChange.getOrder() == CommandOrder.ASSIGN_USER) {
+			return vorgangChange.getValueBeforeChange() + "; " + vorgangChange.getOrganisationseinheitenId();
+		}
+		return vorgangChange.getValueBeforeChange();
+	}
+
+	String createValueAfterChange(VorgangChange vorgangChange) {
+		if (vorgangChange.getOrder() == CommandOrder.ASSIGN_USER) {
+			return vorgangChange.getValueAfterChange() + "; " + vorgangChange.getOrganisationseinheitenId();
+		}
+		return vorgangChange.getValueAfterChange();
+	}
+
 }
diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/historie/ExportHistorieServiceTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/historie/ExportHistorieServiceTest.java
index 965cb03cce..ca25dd2f4d 100644
--- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/historie/ExportHistorieServiceTest.java
+++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/historie/ExportHistorieServiceTest.java
@@ -6,11 +6,15 @@ import static org.mockito.Mockito.*;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.EnumSource;
+import org.junit.jupiter.params.provider.EnumSource.Mode;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
 
 import de.ozgcloud.alfa.common.DateConverter;
+import de.ozgcloud.alfa.common.command.CommandOrder;
 import de.ozgcloud.alfa.export.HistorienProtokollInformationTypeTestFactory;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingang;
 import de.ozgcloud.alfa.vorgang.VorgangWithEingangTestFactory;
@@ -98,25 +102,45 @@ class ExportHistorieServiceTest {
 	@Nested
 	class TestCreateHistorienProtokollInformationType {
 
+		private static final String CREATED_VALUE_BEFORE_CHANGE =
+				VorgangChangeTestFactory.VALUE_BEFORE_CHANGE + VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID;
+		private static final String CREATED_VALUE_AFTER_CHANGE =
+				VorgangChangeTestFactory.VALUE_AFTER_CHANGE + VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID;
 		private final VorgangChange vorgangChange = VorgangChangeTestFactory.create();
 
 		@BeforeEach
 		void setUp() {
 			doReturn(VorgangChangeTestFactory.CREATED_BY_NAME).when(service).createAkteur(vorgangChange);
+			doReturn(CREATED_VALUE_BEFORE_CHANGE).when(service).createValueBeforeChange(vorgangChange);
+			doReturn(CREATED_VALUE_AFTER_CHANGE).when(service).createValueAfterChange(vorgangChange);
+		}
+
+		@Test
+		void shouldCreateValueBeforeChange() {
+			service.createHistorienProtokollInformationType(vorgangChange);
+
+			verify(service).createValueBeforeChange(vorgangChange);
 		}
 
 		@Test
 		void shouldHaveAlterWert() {
 			var created = service.createHistorienProtokollInformationType(vorgangChange);
 
-			assertThat(created.getMetadatumAlterWert()).isEqualTo(VorgangChangeTestFactory.VALUE_BEFORE_CHANGE);
+			assertThat(created.getMetadatumAlterWert()).isEqualTo(CREATED_VALUE_BEFORE_CHANGE);
+		}
+
+		@Test
+		void shouldCreateValueAfterChange() {
+			service.createHistorienProtokollInformationType(vorgangChange);
+
+			verify(service).createValueAfterChange(vorgangChange);
 		}
 
 		@Test
 		void shouldHaveNeuerWert() {
 			var created = service.createHistorienProtokollInformationType(vorgangChange);
 
-			assertThat(created.getMetadatumNeuerWert()).isEqualTo(VorgangChangeTestFactory.VALUE_AFTER_CHANGE);
+			assertThat(created.getMetadatumNeuerWert()).isEqualTo(CREATED_VALUE_AFTER_CHANGE);
 		}
 
 		@Test
@@ -160,4 +184,44 @@ class ExportHistorieServiceTest {
 		}
 	}
 
+	@Nested
+	class TestCreateValueBeforeChange {
+
+		@ParameterizedTest
+		@EnumSource(mode = Mode.EXCLUDE, names = "ASSIGN_USER")
+		void shouldReturnValueForOrder(CommandOrder order) {
+			var value = service.createValueBeforeChange(VorgangChangeTestFactory.createBuilder().order(order).build());
+
+			assertThat(value).isEqualTo(VorgangChangeTestFactory.VALUE_BEFORE_CHANGE);
+		}
+
+		@Test
+		void shouldReturnValueForAssignUserOrder() {
+			var value = service.createValueBeforeChange(VorgangChangeTestFactory.createBuilder().order(CommandOrder.ASSIGN_USER).build());
+
+			assertThat(value).isEqualTo(
+					String.format("%s; %s", VorgangChangeTestFactory.VALUE_BEFORE_CHANGE, VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID));
+		}
+	}
+
+	@Nested
+	class TestCreateValueAfterChange {
+
+		@ParameterizedTest
+		@EnumSource(mode = Mode.EXCLUDE, names = "ASSIGN_USER")
+		void shouldReturnValueForOrder(CommandOrder order) {
+			var value = service.createValueAfterChange(VorgangChangeTestFactory.createBuilder().order(order).build());
+
+			assertThat(value).isEqualTo(VorgangChangeTestFactory.VALUE_AFTER_CHANGE);
+		}
+
+		@Test
+		void shouldReturnValueForAssignUserOrder() {
+			var value = service.createValueAfterChange(VorgangChangeTestFactory.createBuilder().order(CommandOrder.ASSIGN_USER).build());
+
+			assertThat(value).isEqualTo(
+					String.format("%s; %s", VorgangChangeTestFactory.VALUE_AFTER_CHANGE, VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID));
+		}
+	}
+
 }
\ No newline at end of file
-- 
GitLab