From b137574d507e02ed0560717e003464c292e79c77 Mon Sep 17 00:00:00 2001 From: Krzysztof <krzysztof.witukiewicz@mgm-tp.com> Date: Tue, 11 Mar 2025 15:28:20 +0100 Subject: [PATCH] OZG-7501 OZG-7899 Extend ForwardingEventListener --- .../de/ozgcloud/vorgang/command/Order.java | 1 + .../vorgang/vorgang/redirect/Address.java | 37 ++++++ .../redirect/ForwardingEventListener.java | 18 ++- .../vorgang/redirect/ForwardingRequest.java | 38 ++++++ .../redirect/ForwardingRequestMapper.java | 50 ++++++++ .../vorgang/redirect/ForwardingService.java | 4 + .../vorgang/redirect/OrganisationEinheit.java | 36 ++++++ .../vorgang/redirect/AddressTestFactory.java | 48 +++++++ .../redirect/ForwardingEventListenerTest.java | 50 +++++++- .../redirect/ForwardingRequestMapperTest.java | 120 ++++++++++++++++++ .../ForwardingRequestTestFactory.java | 44 +++++++ .../OrganisationEinheitTestFactory.java | 47 +++++++ 12 files changed, 485 insertions(+), 8 deletions(-) create mode 100644 vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/Address.java create mode 100644 vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequest.java create mode 100644 vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequestMapper.java create mode 100644 vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/OrganisationEinheit.java create mode 100644 vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/AddressTestFactory.java create mode 100644 vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequestMapperTest.java create mode 100644 vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequestTestFactory.java create mode 100644 vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/OrganisationEinheitTestFactory.java diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/Order.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/Order.java index 5a4c25ad1..cdc8f9ed1 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/Order.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/command/Order.java @@ -50,6 +50,7 @@ public enum Order { REDIRECT_VORGANG, FORWARD_SUCCESSFULL, FORWARD_FAILED, + FORWARD_VORGANG, SEND_POSTFACH_MAIL, RESEND_POSTFACH_MAIL, diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/Address.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/Address.java new file mode 100644 index 000000000..b15442afa --- /dev/null +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/Address.java @@ -0,0 +1,37 @@ +/* + * 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.vorgang.vorgang.redirect; + +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +class Address { + + private String street; + private String houseNumber; + private String zipCode; + private String city; +} 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 d84484bc8..7f25cf25b 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 @@ -26,7 +26,6 @@ package de.ozgcloud.vorgang.vorgang.redirect; import java.util.ConcurrentModificationException; import java.util.function.Predicate; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Component; @@ -38,9 +37,11 @@ import de.ozgcloud.nachrichten.email.MailSendErrorEvent; import de.ozgcloud.nachrichten.email.MailSendRequest; import de.ozgcloud.nachrichten.email.MailSentEvent; import de.ozgcloud.vorgang.command.Order; +import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; @Component +@RequiredArgsConstructor @Log4j2 public class ForwardingEventListener { @@ -48,17 +49,17 @@ public class ForwardingEventListener { private static final String IS_SUCCESSFULL_ORDER_CONDITION = "{T(de.ozgcloud.vorgang.vorgang.redirect.ForwardingEventListener).IS_SUCCESSFULL_ORDER.test(event.getSource())}"; private static final String IS_FAILED_ORDER_CONDITION = "{T(de.ozgcloud.vorgang.vorgang.redirect.ForwardingEventListener).IS_FAILED_ORDER.test(event.getSource())}"; private static final String IS_FORWARD_ORDER_CONDITION = "{T(de.ozgcloud.vorgang.vorgang.redirect.ForwardingEventListener).IS_FORWARD_ORDER.test(event.getSource())}"; + private static final String IS_FORWARD_VORGANG_ORDER_CONDITION = "{T(de.ozgcloud.vorgang.vorgang.redirect.ForwardingEventListener).IS_FORWARD_VORGANG_ORDER.test(event.getSource())}"; public static final Predicate<MailSendRequest> IS_REDIRECT_MAIL_REQ = req -> req.getRequestReference() instanceof Forwarding; public static final Predicate<Command> IS_SUCCESSFULL_ORDER = command -> Order.FORWARD_SUCCESSFULL.isMeant(command.getOrder()); public static final Predicate<Command> IS_FAILED_ORDER = command -> Order.FORWARD_FAILED.isMeant(command.getOrder()); public static final Predicate<Command> IS_FORWARD_ORDER = command -> Order.REDIRECT_VORGANG.isMeant(command.getOrder()); + public static final Predicate<Command> IS_FORWARD_VORGANG_ORDER = command -> Order.FORWARD_VORGANG.isMeant(command.getOrder()); - @Autowired - private ForwardingService service; - - @Autowired - private ApplicationEventPublisher publisher; + private final ForwardingService service; + private final ApplicationEventPublisher publisher; + private final ForwardingRequestMapper forwardingRequestMapper; @EventListener(condition = IS_FORWARD_ORDER_CONDITION) public void onForwardOrder(CommandCreatedEvent event) { @@ -89,6 +90,11 @@ public class ForwardingEventListener { service.markAsFailed(event.getSource()); } + @EventListener(condition = IS_FORWARD_VORGANG_ORDER_CONDITION) + public void onForwardVorgangOrder(CommandCreatedEvent event) { + service.forward(forwardingRequestMapper.fromCommand(event.getSource())); + } + private void handleException(Runnable runnable, String commandId) { try { runnable.run(); diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequest.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequest.java new file mode 100644 index 000000000..b8dbf0587 --- /dev/null +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequest.java @@ -0,0 +1,38 @@ +/* + * 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.vorgang.vorgang.redirect; + +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class ForwardingRequest { + + private String vorgangId; + private long version; + private String createdBy; + private String createdByName; + private OrganisationEinheit organisationEinheit; +} diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequestMapper.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequestMapper.java new file mode 100644 index 000000000..0da7cd2ac --- /dev/null +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequestMapper.java @@ -0,0 +1,50 @@ +/* + * 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.vorgang.vorgang.redirect; + +import java.util.Map; + +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +import de.ozgcloud.command.Command; + +@Mapper +interface ForwardingRequestMapper { + + @Mapping(target = "version", source = "relationVersion") + @Mapping(target = "organisationEinheit", source = "bodyObject") + ForwardingRequest fromCommand(Command command); + + @Mapping(target = "id", expression = "java((String) body.get(\"organisationsEinheitId\"))") + @Mapping(target = "name", expression = "java((String) body.get(\"name\"))") + @Mapping(target = "address", source = ".") + OrganisationEinheit toOrganisationEinheit(Map<String, Object> body); + + @Mapping(target = "street", expression = "java((String) body.get(\"strasse\"))") + @Mapping(target = "houseNumber", expression = "java((String) body.get(\"hausnummer\"))") + @Mapping(target = "zipCode", expression = "java((String) body.get(\"plz\"))") + @Mapping(target = "city", expression = "java((String) body.get(\"ort\"))") + Address toAddress(Map<String, Object> body); +} diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingService.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingService.java index 7af3879a0..a38f6fcf7 100644 --- a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingService.java +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingService.java @@ -329,4 +329,8 @@ public class ForwardingService { public Stream<Forwarding> findForwardings(String vorgangId) { return repository.findByVorgangId(vorgangId).stream(); } + + public void forward(ForwardingRequest request) { + + } } \ No newline at end of file diff --git a/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/OrganisationEinheit.java b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/OrganisationEinheit.java new file mode 100644 index 000000000..8465f4180 --- /dev/null +++ b/vorgang-manager-server/src/main/java/de/ozgcloud/vorgang/vorgang/redirect/OrganisationEinheit.java @@ -0,0 +1,36 @@ +/* + * 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.vorgang.vorgang.redirect; + +import lombok.Builder; +import lombok.Getter; + +@Getter +@Builder +public class OrganisationEinheit { + + private String id; + private String name; + private Address address; +} diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/AddressTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/AddressTestFactory.java new file mode 100644 index 000000000..69d3d4e21 --- /dev/null +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/AddressTestFactory.java @@ -0,0 +1,48 @@ +/* + * 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.vorgang.vorgang.redirect; + +import com.thedeanda.lorem.LoremIpsum; + +import de.ozgcloud.vorgang.vorgang.redirect.Address.AddressBuilder; + +class AddressTestFactory { + + public static final String STREET = LoremIpsum.getInstance().getName(); + public static final String HOUSE_NUMBER = "42a"; + public static final String ZIP_CODE = LoremIpsum.getInstance().getZipCode(); + public static final String CITY = LoremIpsum.getInstance().getCity(); + + public static Address create() { + return createBuilder().build(); + } + + public static AddressBuilder createBuilder() { + return new AddressBuilder() + .street(STREET) + .houseNumber(HOUSE_NUMBER) + .zipCode(ZIP_CODE) + .city(CITY); + } +} 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 1c4363149..364aa21a9 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 @@ -23,18 +23,26 @@ */ package de.ozgcloud.vorgang.vorgang.redirect; +import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.util.ConcurrentModificationException; +import java.util.Map; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.springframework.context.ApplicationEventPublisher; +import com.thedeanda.lorem.LoremIpsum; + import de.ozgcloud.command.Command; +import de.ozgcloud.command.CommandCreatedEvent; import de.ozgcloud.command.CommandFailedEvent; import de.ozgcloud.nachrichten.email.MailSentEventTestFactory; import de.ozgcloud.vorgang.command.CommandCreatedEventTestFactory; @@ -50,9 +58,11 @@ class ForwardingEventListenerTest { private ForwardingService forwardingService; @Mock private ApplicationEventPublisher publisher; + @Mock + private ForwardingRequestMapper forwardingRequestMapper; @Nested - class onForwardOrderCommand { + class OnForwardOrderCommand { @Test void shouldCallService() { @@ -72,7 +82,7 @@ class ForwardingEventListenerTest { } @Nested - class onMailSentEvent { + class OnMailSentEvent { private Forwarding forwarding = ForwardingTestFactory.create(); @@ -85,6 +95,42 @@ class ForwardingEventListenerTest { } + @Nested + class TestOnForwardVorgangOrder { + + private final CommandCreatedEvent event = event(); + @Captor + private ArgumentCaptor<ForwardingRequest> forwardingRequestCaptor; + + @BeforeEach + void init() { + when(forwardingRequestMapper.fromCommand(event.getSource())).thenReturn(ForwardingRequestTestFactory.create()); + } + + @Test + void shouldMapCommandForwardingRequest() { + listener.onForwardVorgangOrder(event); + + verify(forwardingRequestMapper).fromCommand(event.getSource()); + } + + @Test + void shouldCallForwardingService() { + listener.onForwardVorgangOrder(event); + + verify(forwardingService).forward(forwardingRequestCaptor.capture()); + assertThat(forwardingRequestCaptor.getValue()).usingRecursiveComparison().isEqualTo(ForwardingRequestTestFactory.create()); + } + + private static CommandCreatedEvent event() { + return CommandCreatedEventTestFactory.create(CommandTestFactory.createBuilder().bodyObject(commandBody()).build()); + } + + private static Map<String, Object> commandBody() { + return Map.of(LoremIpsum.getInstance().getWords(1), LoremIpsum.getInstance().getWords(1)); + } + } + @Nested class TestMarkAsSuccessfull { diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequestMapperTest.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequestMapperTest.java new file mode 100644 index 000000000..08f42edb7 --- /dev/null +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequestMapperTest.java @@ -0,0 +1,120 @@ +/* + * 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.vorgang.vorgang.redirect; + +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; + +import java.util.Map; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.mapstruct.factory.Mappers; +import org.mockito.Spy; + +import de.ozgcloud.vorgang.command.CommandTestFactory; + +class ForwardingRequestMapperTest { + + @Spy + private ForwardingRequestMapper mapper = Mappers.getMapper(ForwardingRequestMapper.class); + private final Map<String, Object> bodyObject = Map.of( + "organisationsEinheitId", OrganisationEinheitTestFactory.ID, + "name", OrganisationEinheitTestFactory.NAME, + "strasse", AddressTestFactory.STREET, + "hausnummer", AddressTestFactory.HOUSE_NUMBER, + "plz", AddressTestFactory.ZIP_CODE, + "ort", AddressTestFactory.CITY + ); + + @Nested + class TestFromCommand { + + @BeforeEach + void init() { + doReturn(OrganisationEinheitTestFactory.create()).when(mapper).toOrganisationEinheit(any()); + } + + @Test + void shouldMapToOrganisationEinheit() { + map(); + + verify(mapper).toOrganisationEinheit(bodyObject); + } + + @Test + void shouldMapForwardingRequestFields() { + var mapped = map(); + + assertThat(mapped).usingRecursiveComparison().isEqualTo(ForwardingRequestTestFactory.create()); + } + + private ForwardingRequest map() { + return mapper.fromCommand(CommandTestFactory.createBuilder().bodyObject(bodyObject).build()); + } + } + + @Nested + class TestToOrganisationEinheit { + + @BeforeEach + void init() { + doReturn(AddressTestFactory.create()).when(mapper).toAddress(any()); + } + + @Test + void shouldMapToAddress() { + map(); + + verify(mapper).toAddress(bodyObject); + } + + @Test + void shouldMapOrganisationEinheitFields() { + var mapped = map(); + + assertThat(mapped).usingRecursiveComparison().isEqualTo(OrganisationEinheitTestFactory.create()); + } + + private OrganisationEinheit map() { + return mapper.toOrganisationEinheit(bodyObject); + } + } + + @Nested + class TestToAddress { + + @Test + void shouldMapAddressFields() { + var mapped = map(); + + assertThat(mapped).usingRecursiveComparison().isEqualTo(AddressTestFactory.create()); + } + + private Address map() { + return mapper.toAddress(bodyObject); + } + } +} diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequestTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequestTestFactory.java new file mode 100644 index 000000000..dbe06e0b8 --- /dev/null +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/ForwardingRequestTestFactory.java @@ -0,0 +1,44 @@ +/* + * 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.vorgang.vorgang.redirect; + +import de.ozgcloud.vorgang.callcontext.UserTestFactory; +import de.ozgcloud.vorgang.vorgang.VorgangTestFactory; +import de.ozgcloud.vorgang.vorgang.redirect.ForwardingRequest.ForwardingRequestBuilder; + +class ForwardingRequestTestFactory { + + public static ForwardingRequest create() { + return createBuilder().build(); + } + + public static ForwardingRequestBuilder createBuilder() { + return new ForwardingRequestBuilder() + .vorgangId(VorgangTestFactory.ID) + .version(VorgangTestFactory.VERSION) + .createdBy(UserTestFactory.ID) + .createdByName(UserTestFactory.NAME) + .organisationEinheit(OrganisationEinheitTestFactory.create()); + } +} diff --git a/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/OrganisationEinheitTestFactory.java b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/OrganisationEinheitTestFactory.java new file mode 100644 index 000000000..27e64b0db --- /dev/null +++ b/vorgang-manager-server/src/test/java/de/ozgcloud/vorgang/vorgang/redirect/OrganisationEinheitTestFactory.java @@ -0,0 +1,47 @@ +/* + * 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.vorgang.vorgang.redirect; + +import java.util.UUID; + +import com.thedeanda.lorem.LoremIpsum; + +import de.ozgcloud.vorgang.vorgang.redirect.OrganisationEinheit.OrganisationEinheitBuilder; + +class OrganisationEinheitTestFactory { + + public static final String ID = UUID.randomUUID().toString(); + public static final String NAME = LoremIpsum.getInstance().getName(); + + public static OrganisationEinheit create() { + return createBuilder().build(); + } + + public static OrganisationEinheitBuilder createBuilder() { + return new OrganisationEinheitBuilder() + .id(ID) + .name(NAME) + .address(AddressTestFactory.create()); + } +} -- GitLab