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 bee8310c017f2c8658c917d34f86d2d229720eb3..a67353b79b2ba863b703a37775fe7c647edfd917 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 fb5224959e192909860768e2c846469a9d64033a..046d5308e00596afca7a6383ec77b80a5455fea2 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 db96ddecb3ee2614764377c4cd8458dfaaa98ba9..7770b4333db7c66abdccac117a2fc155a78c0997 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 3026ef0557c2429687407ab968f60f6c31a85c13..bd36a44d244b5e355044ce4a4783ba4e6afd0fb6 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 8f1efd6b991fc2f5649f58359da0cf0d6941c2fb..32662710a920068da9e44cb896f4b47fe9f5f2bc 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 908bf70e6b5f1c597534a6156b6b157351a904aa..09eb98b0ab8cb795ca8b6a73595913edde158cc3 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 a0359b44844236f5db8d218aebeb411f6d198879..084a164b9dc5098685ce77e7af4e2a03f96c59f8 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 3f36de63145a0efcf681a5f54a05152c92227863..abf89a2543920bfa2a5116a356a60bb7ab18e2d9 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)