Skip to content
Snippets Groups Projects
Commit 0dd2701c authored by Krzysztof Witukiewicz's avatar Krzysztof Witukiewicz
Browse files

OZG-7501 OZG-7874 Fix serialization issue

parent 8387f5a8
No related branches found
No related tags found
1 merge request!19Ozg 7501 weiterleitung vorbereiten
This commit is part of merge request !19. Comments created here will be created in the context of that merge request.
......@@ -48,6 +48,7 @@ class ForwardByVorgangCommandController {
private final CommandService commandService;
private final OrganisationsEinheitController organisationsEinheitController;
private final ForwardVorgangCommandBodyMapper bodyMapper;
@PostMapping
public ResponseEntity<Void> createCommand(@PathVariable String vorgangId, @PathVariable long vorgangVersion, @RequestBody CreateCommand command) {
......@@ -70,9 +71,6 @@ class ForwardByVorgangCommandController {
}
private ForwardVorgangCommandBody addOrganisationsEinheitData(OrganisationsEinheit organisationsEinheit, ForwardVorgangCommandBody body) {
return body.toBuilder()
.name(organisationsEinheit.getName())
.anschrift(organisationsEinheit.getAnschrift())
.build();
return bodyMapper.updateFromOrganisationsEinheit(organisationsEinheit, body);
}
}
......@@ -25,15 +25,16 @@ package de.ozgcloud.alfa.forwarding;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import de.ozgcloud.alfa.collaboration.Anschrift;
import de.ozgcloud.alfa.common.LinkedResourceDeserializer;
import de.ozgcloud.alfa.common.command.CommandBody;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@Builder(toBuilder = true)
@AllArgsConstructor
@NoArgsConstructor
......@@ -43,5 +44,8 @@ public class ForwardVorgangCommandBody implements CommandBody {
private String organisationsEinheitId;
private String name;
private Anschrift anschrift;
private String strasse;
private String hausnummer;
private String plz;
private String ort;
}
/*
* Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.alfa.forwarding;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.MappingTarget;
import de.ozgcloud.alfa.collaboration.OrganisationsEinheit;
@Mapper
interface ForwardVorgangCommandBodyMapper {
@Mapping(target = "organisationsEinheitId", ignore = true)
@Mapping(target = "strasse", source = "anschrift.strasse")
@Mapping(target = "hausnummer", source = "anschrift.hausnummer")
@Mapping(target = "plz", source = "anschrift.plz")
@Mapping(target = "ort", source = "anschrift.ort")
ForwardVorgangCommandBody updateFromOrganisationsEinheit(OrganisationsEinheit organisationsEinheit, @MappingTarget ForwardVorgangCommandBody commandBody);
}
......@@ -45,6 +45,7 @@ import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultActions;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import de.ozgcloud.alfa.collaboration.OrganisationsEinheit;
import de.ozgcloud.alfa.collaboration.OrganisationsEinheitController;
import de.ozgcloud.alfa.collaboration.OrganisationsEinheitTestFactory;
import de.ozgcloud.alfa.common.command.CommandOrder;
......@@ -63,6 +64,8 @@ class ForwardByVorgangCommandControllerTest {
@Mock
private OrganisationsEinheitController organisationsEinheitController;
@Mock
private ForwardVorgangCommandBodyMapper bodyMapper;
@Mock
private ProblemDetailMapper problemDetailMapper;
@Spy
@InjectMocks
......@@ -78,17 +81,22 @@ class ForwardByVorgangCommandControllerTest {
@Nested
class TestCreateCommand {
@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(OrganisationsEinheitTestFactory.create()), HttpStatus.OK));
new ResponseEntity<>(EntityModel.of(organisationsEinheit), HttpStatus.OK));
when(commandService.createCommand(any(), anyLong())).thenReturn(CommandTestFactory.create());
when(bodyMapper.updateFromOrganisationsEinheit(any(), any())).thenReturn(ForwardVorgangCommandBodyTestFactory.create());
}
@Test
......@@ -98,6 +106,14 @@ class ForwardByVorgangCommandControllerTest {
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();
......
/*
* Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package de.ozgcloud.alfa.forwarding;
import static org.assertj.core.api.Assertions.*;
import java.util.UUID;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mapstruct.factory.Mappers;
import de.ozgcloud.alfa.collaboration.OrganisationsEinheitTestFactory;
class ForwardVorgangCommandBodyMapperTest {
private final ForwardVorgangCommandBodyMapper mapper = Mappers.getMapper(ForwardVorgangCommandBodyMapper.class);
@Nested
class TestUpdateFromOrganisationsEinheit {
private static final String ORGANISATIONS_EINHEIT_ID = UUID.randomUUID().toString();
private final ForwardVorgangCommandBody body = ForwardVorgangCommandBody.builder()
.organisationsEinheitId(ORGANISATIONS_EINHEIT_ID).build();
@Test
void shouldUpdateFromOrganisationsEinheit() {
mapper.updateFromOrganisationsEinheit(OrganisationsEinheitTestFactory.create(), body);
assertThat(body).usingRecursiveComparison().ignoringFields("organisationsEinheitId")
.isEqualTo(ForwardVorgangCommandBodyTestFactory.create());
}
@Test
void shouldPreserveId() {
mapper.updateFromOrganisationsEinheit(OrganisationsEinheitTestFactory.create(), body);
assertThat(body.getOrganisationsEinheitId()).isEqualTo(ORGANISATIONS_EINHEIT_ID);
}
}
}
......@@ -23,6 +23,7 @@
*/
package de.ozgcloud.alfa.forwarding;
import de.ozgcloud.alfa.collaboration.AnschriftTestFactory;
import de.ozgcloud.alfa.collaboration.OrganisationsEinheitTestFactory;
import de.ozgcloud.alfa.forwarding.ForwardVorgangCommandBody.ForwardVorgangCommandBodyBuilder;
......@@ -36,6 +37,9 @@ class ForwardVorgangCommandBodyTestFactory {
return ForwardVorgangCommandBody.builder()
.organisationsEinheitId(OrganisationsEinheitTestFactory.ID)
.name(OrganisationsEinheitTestFactory.NAME)
.anschrift(OrganisationsEinheitTestFactory.ANSCHRIFT);
.strasse(AnschriftTestFactory.STRASSE)
.ort(AnschriftTestFactory.ORT)
.hausnummer(AnschriftTestFactory.HAUSNUMMER)
.plz(AnschriftTestFactory.PLZ);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment