From 0e3d53cca6749398e8744dc7fc4cc1407f8d8b58 Mon Sep 17 00:00:00 2001
From: Krzysztof <krzysztof.witukiewicz@mgm-tp.com>
Date: Thu, 13 Mar 2025 14:07:25 +0100
Subject: [PATCH] OZG-7501 OZG-7874 Small refactorings

---
 .../OrganisationsEinheitController.java       |   4 +
 .../ForwardByVorgangCommandController.java    |  18 +--
 .../forwarding/ForwardVorgangCommandBody.java |   2 +-
 .../ForwardVorgangCommandBodyMapper.java      |   4 +-
 .../OrganisationsEinheitControllerTest.java   |  21 ++++
 ...ForwardByVorgangCommandControllerTest.java | 110 +++++++-----------
 .../ForwardVorgangCommandBodyMapperTest.java  |  14 +--
 .../ForwardVorgangCommandBodyTestFactory.java |   2 +-
 8 files changed, 80 insertions(+), 95 deletions(-)

diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitController.java
index bee8310c01..a67353b79b 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitController.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitController.java
@@ -59,4 +59,8 @@ public class OrganisationsEinheitController {
 	public CollectionModel<EntityModel<OrganisationsEinheitHeader>> search(@RequestParam String searchBy) {
 		return headerModelAssembler.toCollectionModel(service.searchOrganisationsEinheiten(searchBy).toList());
 	}
+
+	public OrganisationsEinheit getOrganisationEinheit(String organisationEinheitId) {
+		return service.getById(organisationEinheitId);
+	}
 }
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardByVorgangCommandController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardByVorgangCommandController.java
index fb5224959e..046d5308e0 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardByVorgangCommandController.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardByVorgangCommandController.java
@@ -32,12 +32,10 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import de.ozgcloud.alfa.collaboration.OrganisationsEinheit;
 import de.ozgcloud.alfa.collaboration.OrganisationsEinheitController;
 import de.ozgcloud.alfa.common.command.CommandController;
 import de.ozgcloud.alfa.common.command.CommandService;
 import de.ozgcloud.alfa.common.command.CreateCommand;
-import de.ozgcloud.common.errorhandling.TechnicalException;
 import lombok.RequiredArgsConstructor;
 
 @RestController
@@ -52,25 +50,19 @@ class ForwardByVorgangCommandController {
 
 	@PostMapping
 	public ResponseEntity<Void> createCommand(@PathVariable String vorgangId, @PathVariable long vorgangVersion, @RequestBody CreateCommand command) {
-		var body = (ForwardVorgangCommandBody) command.getBody();
+		var completeBody = addOrganisationEinheitData((ForwardVorgangCommandBody) command.getBody());
 		var enrichedCommand = command.toBuilder()
 				.vorgangId(vorgangId)
 				.relationId(vorgangId)
-				.body(addOrganisationsEinheitData(getOrganisationsEinheitById(body.getOrganisationsEinheitId()), body))
+				.body(completeBody)
 				.build();
 		var created = commandService.createCommand(enrichedCommand, vorgangVersion);
 		return ResponseEntity.created(linkTo(CommandController.class).slash(created.getId()).toUri()).build();
 	}
 
-	private OrganisationsEinheit getOrganisationsEinheitById(String id) {
-		var response = organisationsEinheitController.getById(id);
-		if (!response.getStatusCode().is2xxSuccessful() || response.getBody() == null) {
-			throw new TechnicalException("Could not get Organisationseinheit by id: " + id);
-		}
-		return response.getBody().getContent();
-	}
 
-	private ForwardVorgangCommandBody addOrganisationsEinheitData(OrganisationsEinheit organisationsEinheit, ForwardVorgangCommandBody body) {
-		return bodyMapper.updateFromOrganisationsEinheit(organisationsEinheit, body);
+	private ForwardVorgangCommandBody addOrganisationEinheitData(ForwardVorgangCommandBody body) {
+		var organisationEinheit = organisationsEinheitController.getOrganisationEinheit(body.getOrganisationEinheitId());
+		return bodyMapper.updateFromOrganisationEinheit(organisationEinheit, body);
 	}
 }
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBody.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBody.java
index db96ddecb3..7770b4333d 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBody.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBody.java
@@ -41,7 +41,7 @@ import lombok.Setter;
 public class ForwardVorgangCommandBody implements CommandBody {
 
 	@JsonDeserialize(using = LinkedResourceDeserializer.class)
-	private String organisationsEinheitId;
+	private String organisationEinheitId;
 
 	private String name;
 	private String strasse;
diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBodyMapper.java b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBodyMapper.java
index 3026ef0557..bd36a44d24 100644
--- a/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBodyMapper.java
+++ b/alfa-service/src/main/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBodyMapper.java
@@ -32,7 +32,7 @@ import de.ozgcloud.alfa.collaboration.OrganisationsEinheit;
 @Mapper
 interface ForwardVorgangCommandBodyMapper {
 
-	@Mapping(target = "organisationsEinheitId", ignore = true)
+	@Mapping(target = "organisationEinheitId", ignore = true)
 	@Mapping(target = ".", source = "anschrift")
-	ForwardVorgangCommandBody updateFromOrganisationsEinheit(OrganisationsEinheit organisationsEinheit, @MappingTarget ForwardVorgangCommandBody commandBody);
+	ForwardVorgangCommandBody updateFromOrganisationEinheit(OrganisationsEinheit organisationsEinheit, @MappingTarget ForwardVorgangCommandBody commandBody);
 }
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitControllerTest.java
index 8f1efd6b99..32662710a9 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitControllerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/collaboration/OrganisationsEinheitControllerTest.java
@@ -23,6 +23,7 @@
  */
 package de.ozgcloud.alfa.collaboration;
 
+import static org.assertj.core.api.Assertions.*;
 import static org.mockito.Mockito.*;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
@@ -256,4 +257,24 @@ class OrganisationsEinheitControllerTest {
 		}
 	}
 
+	@Nested
+	class TestGetOrganisationEinheit {
+
+		@Test
+		void shouldCallService() {
+			controller.getOrganisationEinheit(OrganisationsEinheitTestFactory.ID);
+
+			verify(service).getById(OrganisationsEinheitTestFactory.ID);
+		}
+
+		@Test
+		void shouldReturnOrganisationEinheit() {
+			var organisationEinheitFromService = OrganisationsEinheitTestFactory.create();
+			when(service.getById(any())).thenReturn(organisationEinheitFromService);
+
+			var organisationsEinheit = controller.getOrganisationEinheit(OrganisationsEinheitTestFactory.ID);
+
+			assertThat(organisationsEinheit).isSameAs(organisationEinheitFromService);
+		}
+	}
 }
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardByVorgangCommandControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardByVorgangCommandControllerTest.java
index 908bf70e6b..09eb98b0ab 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardByVorgangCommandControllerTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardByVorgangCommandControllerTest.java
@@ -37,10 +37,7 @@ import org.mockito.Captor;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.Spy;
-import org.springframework.hateoas.EntityModel;
-import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.ResultActions;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
@@ -81,86 +78,57 @@ class ForwardByVorgangCommandControllerTest {
 	@Nested
 	class TestCreateCommand {
 
+		private final OrganisationsEinheit organisationsEinheit = OrganisationsEinheitTestFactory.create();
 		@Captor
-		private ArgumentCaptor<ForwardVorgangCommandBody> bodyCaptor;
-
-		@Nested
-		class OnOrganisationsEinheitAvailable {
-
-			private final OrganisationsEinheit organisationsEinheit = OrganisationsEinheitTestFactory.create();
-			@Captor
-			private ArgumentCaptor<CreateCommand> commandCaptor;
-
-			@BeforeEach
-			void init() {
-				when(organisationsEinheitController.getById(any())).thenReturn(
-						new ResponseEntity<>(EntityModel.of(organisationsEinheit), HttpStatus.OK));
-				when(commandService.createCommand(any(), anyLong())).thenReturn(CommandTestFactory.create());
-				when(bodyMapper.updateFromOrganisationsEinheit(any(), any())).thenReturn(ForwardVorgangCommandBodyTestFactory.create());
-			}
-
-			@Test
-			void shouldCallOrganisationsEinheitController() {
-				doRequest();
-
-				verify(organisationsEinheitController).getById(OrganisationsEinheitTestFactory.ID);
-			}
-
-			@Test
-			void shouldAddOrganisationsEinheitData() {
-				doRequest();
-
-				verify(controller).createCommand(any(), anyLong(), commandCaptor.capture());
-				verify(bodyMapper).updateFromOrganisationsEinheit(organisationsEinheit, (ForwardVorgangCommandBody) commandCaptor.getValue().getBody());
-			}
-
-			@Test
-			void shouldCallCommandService() {
-				doRequest();
+		private ArgumentCaptor<CreateCommand> commandCaptor;
+		@Captor
+		private ArgumentCaptor<ForwardVorgangCommandBody> commandBodyCaptor;
 
-				verify(commandService).createCommand(commandCaptor.capture(), eq(VorgangHeaderTestFactory.VERSION));
-				assertThat(commandCaptor.getValue()).usingRecursiveComparison().isEqualTo(CreateForwardVorgangCommandTestFactory.create());
-			}
+		@BeforeEach
+		void init() {
+			when(organisationsEinheitController.getOrganisationEinheit(any())).thenReturn(organisationsEinheit);
+			when(commandService.createCommand(any(), anyLong())).thenReturn(CommandTestFactory.create());
+			when(bodyMapper.updateFromOrganisationEinheit(any(), any())).thenReturn(ForwardVorgangCommandBodyTestFactory.create());
+		}
 
-			@SneakyThrows
-			@Test
-			void shouldReturnCreated() {
-				var response = doRequest();
+		@Test
+		void shouldCallOrganisationsEinheitController() {
+			doRequest();
 
-				response.andExpect(status().isCreated());
-			}
+			verify(organisationsEinheitController).getOrganisationEinheit(OrganisationsEinheitTestFactory.ID);
+		}
 
-			@SneakyThrows
-			@Test
-			void shouldReturnLinkToCreatedCommand() {
-				var response = doRequest();
+		@Test
+		void shouldAddOrganisationsEinheitData() {
+			doRequest();
 
-				response.andExpect(header().stringValues("location", "http://localhost" + COMMANDS_PATH + "/" + CommandTestFactory.ID));
-			}
+			verify(bodyMapper).updateFromOrganisationEinheit(same(organisationsEinheit), commandBodyCaptor.capture());
+			assertThat(commandBodyCaptor.getValue()).usingRecursiveComparison()
+					.isEqualTo(ForwardVorgangCommandBody.builder().organisationEinheitId(OrganisationsEinheitTestFactory.ID).build());
 		}
 
-		@Nested
-		class OnOrganisationsEinheitMissing {
-
-			@SneakyThrows
-			@Test
-			void shouldReturnInternalServerErrorIfNotFound() {
-				when(organisationsEinheitController.getById(any())).thenReturn(new ResponseEntity<>(HttpStatus.NOT_FOUND));
+		@Test
+		void shouldCallCommandService() {
+			doRequest();
 
-				var response = doRequest();
+			verify(commandService).createCommand(commandCaptor.capture(), eq(VorgangHeaderTestFactory.VERSION));
+			assertThat(commandCaptor.getValue()).usingRecursiveComparison().isEqualTo(CreateForwardVorgangCommandTestFactory.create());
+		}
 
-				response.andExpect(status().isInternalServerError());
-			}
+		@SneakyThrows
+		@Test
+		void shouldReturnCreated() {
+			var response = doRequest();
 
-			@SneakyThrows
-			@Test
-			void shouldReturnInternalServerErrorIfBodyIsEmpty() {
-				when(organisationsEinheitController.getById(any())).thenReturn(new ResponseEntity<>(null, HttpStatus.OK));
+			response.andExpect(status().isCreated());
+		}
 
-				var response = doRequest();
+		@SneakyThrows
+		@Test
+		void shouldReturnLinkToCreatedCommand() {
+			var response = doRequest();
 
-				response.andExpect(status().isInternalServerError());
-			}
+			response.andExpect(header().stringValues("location", "http://localhost" + COMMANDS_PATH + "/" + CommandTestFactory.ID));
 		}
 
 		@SneakyThrows
@@ -173,7 +141,7 @@ class ForwardByVorgangCommandControllerTest {
 		private String createContent() {
 			return CommandTestFactory.buildCreateCommandWithBodyContent(
 					CommandOrder.FORWARD_VORGANG,
-					"{\"organisationsEinheitId\":\"%s\"}".formatted(OrganisationsEinheitTestFactory.ID));
+					"{\"organisationEinheitId\":\"%s\"}".formatted(OrganisationsEinheitTestFactory.ID));
 		}
 	}
 }
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBodyMapperTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBodyMapperTest.java
index a0359b4484..084a164b9d 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBodyMapperTest.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBodyMapperTest.java
@@ -38,26 +38,26 @@ class ForwardVorgangCommandBodyMapperTest {
 	private final ForwardVorgangCommandBodyMapper mapper = Mappers.getMapper(ForwardVorgangCommandBodyMapper.class);
 
 	@Nested
-	class TestUpdateFromOrganisationsEinheit {
+	class TestUpdateFromOrganisationEinheit {
 
 		private static final String ORGANISATIONS_EINHEIT_ID = UUID.randomUUID().toString();
 
 		private final ForwardVorgangCommandBody body = ForwardVorgangCommandBody.builder()
-				.organisationsEinheitId(ORGANISATIONS_EINHEIT_ID).build();
+				.organisationEinheitId(ORGANISATIONS_EINHEIT_ID).build();
 
 		@Test
-		void shouldUpdateFromOrganisationsEinheit() {
-			mapper.updateFromOrganisationsEinheit(OrganisationsEinheitTestFactory.create(), body);
+		void shouldUpdateFromOrganisationEinheit() {
+			mapper.updateFromOrganisationEinheit(OrganisationsEinheitTestFactory.create(), body);
 
-			assertThat(body).usingRecursiveComparison().ignoringFields("organisationsEinheitId")
+			assertThat(body).usingRecursiveComparison().ignoringFields("organisationEinheitId")
 					.isEqualTo(ForwardVorgangCommandBodyTestFactory.create());
 		}
 
 		@Test
 		void shouldPreserveId() {
-			mapper.updateFromOrganisationsEinheit(OrganisationsEinheitTestFactory.create(), body);
+			mapper.updateFromOrganisationEinheit(OrganisationsEinheitTestFactory.create(), body);
 
-			assertThat(body.getOrganisationsEinheitId()).isEqualTo(ORGANISATIONS_EINHEIT_ID);
+			assertThat(body.getOrganisationEinheitId()).isEqualTo(ORGANISATIONS_EINHEIT_ID);
 		}
 	}
 }
diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBodyTestFactory.java b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBodyTestFactory.java
index 3f36de6314..abf89a2543 100644
--- a/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBodyTestFactory.java
+++ b/alfa-service/src/test/java/de/ozgcloud/alfa/forwarding/ForwardVorgangCommandBodyTestFactory.java
@@ -35,7 +35,7 @@ class ForwardVorgangCommandBodyTestFactory {
 
 	static ForwardVorgangCommandBodyBuilder createBuilder() {
 		return ForwardVorgangCommandBody.builder()
-				.organisationsEinheitId(OrganisationsEinheitTestFactory.ID)
+				.organisationEinheitId(OrganisationsEinheitTestFactory.ID)
 				.name(OrganisationsEinheitTestFactory.NAME)
 				.strasse(AnschriftTestFactory.STRASSE)
 				.ort(AnschriftTestFactory.ORT)
-- 
GitLab