From 4be80922679aa7fc2e6a3e6b0a22db97d456b918 Mon Sep 17 00:00:00 2001
From: Krzysztof <krzysztof.witukiewicz@mgm-tp.com>
Date: Fri, 14 Mar 2025 13:44:23 +0100
Subject: [PATCH] OZG-7501 OZG-7899 Forward after locking

---
 .../redirect/ForwardingEventListener.java     |  8 +++++--
 .../redirect/ForwardingEventListenerTest.java | 21 ++++++++++++++-----
 2 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListener.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListener.java
index 5462a6675..7303a7b85 100644
--- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListener.java
+++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListener.java
@@ -101,14 +101,18 @@ public class ForwardingEventListener {
 	}
 
 	void handleForwardVorgangCommand(Command command) {
-		service.forward(forwardingRequestMapper.fromCommand(command));
 		lockVorgangOnForwarding(command);
+		service.forward(incrementVersion(forwardingRequestMapper.fromCommand(command)));
 		publisher.publishEvent(new VorgangLockedEvent(command));
 	}
 
 	private void lockVorgangOnForwarding(Command command) {
 		var lock = lockMapper.fromCommand(command).toBuilder().reason("Vorgang was forwarded").build();
-		vorgangService.lockVorgang(lock, command.getVorgangId(), command.getRelationVersion() + 1);
+		vorgangService.lockVorgang(lock, command.getVorgangId(), command.getRelationVersion());
+	}
+
+	private ForwardingRequest incrementVersion(ForwardingRequest request) {
+		return request.toBuilder().version(request.getVersion() + 1).build();
 	}
 
 	private void handleException(Runnable runnable, String commandId) {
diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListenerTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListenerTest.java
index 7ea1432a9..6e8e2b676 100644
--- a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListenerTest.java
+++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingEventListenerTest.java
@@ -97,7 +97,7 @@ class ForwardingEventListenerTest {
 	@Nested
 	class OnMailSentEvent {
 
-		private Forwarding forwarding = ForwardingTestFactory.create();
+		private final Forwarding forwarding = ForwardingTestFactory.create();
 
 		@Test
 		void shouldCallRedirectService() {
@@ -145,15 +145,16 @@ class ForwardingEventListenerTest {
 
 		private final Command command = CommandTestFactory.createBuilder().bodyObject(commandBody()).build();
 		private final Lock lock = LockTestFactory.create();
-		private final ForwardingRequest request = ForwardingRequestTestFactory.create();
 		@Captor
 		private ArgumentCaptor<Lock> lockCaptor;
 		@Captor
 		private ArgumentCaptor<VorgangLockedEvent> lockedEventCaptor;
+		@Captor
+		private ArgumentCaptor<ForwardingRequest> requestCaptor;
 
 		@BeforeEach
 		void init() {
-			when(forwardingRequestMapper.fromCommand(any())).thenReturn(request);
+			when(forwardingRequestMapper.fromCommand(any())).thenReturn(ForwardingRequestTestFactory.create());
 			when(lockMapper.fromCommand(any())).thenReturn(lock);
 		}
 
@@ -168,7 +169,7 @@ class ForwardingEventListenerTest {
 		void shouldLockVorgang() {
 			handleForwardVorgangCommand();
 
-			verify(vorgangService).lockVorgang(lockCaptor.capture(), eq(VorgangTestFactory.ID), eq(CommandTestFactory.RELATION_VERSION + 1));
+			verify(vorgangService).lockVorgang(lockCaptor.capture(), eq(VorgangTestFactory.ID), eq(CommandTestFactory.RELATION_VERSION));
 			assertThat(lockCaptor.getValue()).usingRecursiveComparison()
 					.isEqualTo(LockTestFactory.createBuilder().reason("Vorgang was forwarded").build());
 		}
@@ -184,7 +185,17 @@ class ForwardingEventListenerTest {
 		void shouldCallForwardingService() {
 			handleForwardVorgangCommand();
 
-			verify(forwardingService).forward(same(request));
+			verify(forwardingService).forward(requestCaptor.capture());
+			assertThat(requestCaptor.getValue()).usingRecursiveComparison().ignoringFields("version")
+					.isEqualTo(ForwardingRequestTestFactory.create());
+		}
+
+		@Test
+		void shouldIncrementVersionInRequest() {
+			handleForwardVorgangCommand();
+
+			verify(forwardingService).forward(requestCaptor.capture());
+			assertThat(requestCaptor.getValue().getVersion()).isEqualTo(VorgangTestFactory.VERSION + 1);
 		}
 
 		@Test
-- 
GitLab