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

OZG-7573 OZG-7923 Mapping for GrpcRouteForwarding

parent ebd1f98b
No related branches found
No related tags found
1 merge request!23Ozg 7573 forwarding interface
Showing
with 224 additions and 7 deletions
......@@ -36,7 +36,7 @@ import de.ozgcloud.vorgang.common.grpc.GrpcFormDataMapper;
nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, //
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, //
collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED)
interface EingangMapper {
public interface EingangMapper {
@Mapping(source = "attachmentsList", target = "attachments")
@Mapping(source = "representationsList", target = "representations")
......
......@@ -26,12 +26,24 @@ package de.ozgcloud.vorgang.vorgang.redirect;
import java.util.Map;
import org.apache.commons.collections4.MapUtils;
import org.mapstruct.CollectionMappingStrategy;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.NullValueCheckStrategy;
import org.mapstruct.NullValuePropertyMappingStrategy;
import de.ozgcloud.command.Command;
import de.ozgcloud.eingang.forwarding.GrpcEingangStub;
import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria;
import de.ozgcloud.eingang.forwarding.GrpcRouteForwarding;
import de.ozgcloud.vorgang.vorgang.Eingang;
import de.ozgcloud.vorgang.vorgang.EingangMapper;
import de.ozgcloud.vorgang.vorgang.GrpcEingang;
@Mapper(imports = MapUtils.class)
@Mapper(imports = MapUtils.class, uses = EingangMapper.class, //
nullValuePropertyMappingStrategy = NullValuePropertyMappingStrategy.IGNORE, //
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS, //
collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED)
interface ForwardingRequestMapper {
interface CommandBodyFields {
......@@ -42,7 +54,7 @@ interface ForwardingRequestMapper {
String PLZ = "plz";
String ORT = "ort";
}
@Mapping(target = "version", source = "relationVersion")
@Mapping(target = "organisationEinheit", source = "bodyObject")
ForwardingRequest fromCommand(Command command);
......@@ -57,4 +69,17 @@ interface ForwardingRequestMapper {
@Mapping(target = "zipCode", expression = "java(MapUtils.getString(body, CommandBodyFields.PLZ))")
@Mapping(target = "city", expression = "java(MapUtils.getString(body, CommandBodyFields.ORT))")
Address toAddress(Map<String, Object> body);
@Mapping(target = "routeCriteria", source = "request")
@Mapping(target = "eingangStub", source = "eingang")
@Mapping(target = "unknownFields", ignore = true)
@Mapping(target = "allFields", ignore = true)
GrpcRouteForwarding toGrpcRouteForwarding(ForwardingRequest request, Eingang eingang);
@Mapping(target = "organisationEinheitId", source = "organisationEinheit.id")
GrpcRouteCriteria toGrpcRouteCriteria(ForwardingRequest request);
@Mapping(target = "unknownFields", ignore = true)
@Mapping(target = "allFields", ignore = true)
GrpcEingangStub toGrpcEingangStub(GrpcEingang eingang);
}
......@@ -25,12 +25,11 @@ package de.ozgcloud.vorgang.vorgang;
import java.util.UUID;
import de.ozgcloud.vorgang.common.grpc.GrpcSubFormTestFactory;
import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory;
public class GrpcEingangTestFactory {
public static final String ID = UUID.randomUUID().toString();
public static final GrpcSubForm SUB_FORM = GrpcSubFormTestFactory.create();
public static GrpcEingang create() {
return createBuilder().build();
......@@ -42,7 +41,7 @@ public class GrpcEingangTestFactory {
.setHeader(GrpcEingangHeaderTestFactory.create())
.setAntragsteller(GrpcAntragstellerTestFactory.create())
.setZustaendigeStelle(GrpcZustaendigeStelleTestFactory.create())
.setFormData(GrpcFormData.newBuilder().addForm(GrpcSubFormTestFactory.create()).build())
.setFormData(GrpcFormDataTestFactory.create())
.addAttachments(GrpcIncomingFileGroupTestFactory.create())
.setNumberOfAttachments(4)
.addRepresentations(GrpcIncomingFileTestFactory.create())
......
......@@ -32,14 +32,26 @@ 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.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import de.ozgcloud.eingang.forwarding.GrpcRouteCriteria;
import de.ozgcloud.eingang.forwarding.GrpcRouteForwarding;
import de.ozgcloud.vorgang.command.CommandTestFactory;
import de.ozgcloud.vorgang.vorgang.Eingang;
import de.ozgcloud.vorgang.vorgang.EingangMapper;
import de.ozgcloud.vorgang.vorgang.EingangTestFactory;
import de.ozgcloud.vorgang.vorgang.GrpcEingang;
import de.ozgcloud.vorgang.vorgang.GrpcEingangTestFactory;
import de.ozgcloud.vorgang.vorgang.redirect.ForwardingRequestMapper.CommandBodyFields;
class ForwardingRequestMapperTest {
@Mock
private EingangMapper eingangMapper;
@Spy
@InjectMocks
private ForwardingRequestMapper mapper = Mappers.getMapper(ForwardingRequestMapper.class);
private final Map<String, Object> bodyObject = Map.of(
CommandBodyFields.ORGANISATION_EINHEIT_ID, OrganisationEinheitTestFactory.ID,
......@@ -118,4 +130,65 @@ class ForwardingRequestMapperTest {
return mapper.toAddress(bodyObject);
}
}
@Nested
class TestToGrpcRouteForwarding {
private final ForwardingRequest request = ForwardingRequestTestFactory.create();
private final Eingang eingang = EingangTestFactory.create();
private final GrpcEingang grpcEingang = GrpcEingangTestFactory.create();
@BeforeEach
void init() {
doReturn(GrpcRouteCriteriaTestFactory.create()).when(mapper).toGrpcRouteCriteria(any());
when(eingangMapper.toGrpc(any())).thenReturn(grpcEingang);
}
@Test
void shouldCallEingangMapper() {
map();
verify(eingangMapper).toGrpc(eingang);
}
@Test
void shouldMapToGrpcRouteCriteria() {
map();
verify(mapper).toGrpcRouteCriteria(request);
}
@Test
void shouldMapToGrpcEingangStub() {
map();
verify(mapper).toGrpcEingangStub(grpcEingang);
}
@Test
void shouldMapToGrpcRouteForwarding() {
var mapped = map();
assertThat(mapped).isEqualTo(GrpcRouteForwardingTestFactory.create());
}
private GrpcRouteForwarding map() {
return mapper.toGrpcRouteForwarding(request, eingang);
}
}
@Nested
class TestToGrpcRouteCriteria {
@Test
void shouldMap() {
var mapped = map();
assertThat(mapped).isEqualTo(GrpcRouteCriteriaTestFactory.create());
}
private GrpcRouteCriteria map() {
return mapper.toGrpcRouteCriteria(ForwardingRequestTestFactory.create());
}
}
}
/*
* 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.eingang.forwarding.GrpcEingangStub;
import de.ozgcloud.vorgang.common.grpc.GrpcFormDataTestFactory;
import de.ozgcloud.vorgang.vorgang.GrpcAntragstellerTestFactory;
import de.ozgcloud.vorgang.vorgang.GrpcEingangHeaderTestFactory;
class GrpcEingangStubTestFactory {
public static GrpcEingangStub create() {
return createBuilder().build();
}
public static GrpcEingangStub.Builder createBuilder() {
return GrpcEingangStub.newBuilder()
.setHeader(GrpcEingangHeaderTestFactory.create())
.setAntragsteller(GrpcAntragstellerTestFactory.create())
.setFormData(GrpcFormDataTestFactory.create());
}
}
/*
* 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.eingang.forwarding.GrpcRouteCriteria;
class GrpcRouteCriteriaTestFactory {
public static GrpcRouteCriteria create() {
return createBuilder().build();
}
public static GrpcRouteCriteria.Builder createBuilder() {
return GrpcRouteCriteria.newBuilder()
.setOrganisationEinheitId(OrganisationEinheitTestFactory.ID);
}
}
/*
* 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.eingang.forwarding.GrpcRouteForwarding;
class GrpcRouteForwardingTestFactory {
public static GrpcRouteForwarding create() {
return createBuilder().build();
}
public static GrpcRouteForwarding.Builder createBuilder() {
return GrpcRouteForwarding.newBuilder()
.setRouteCriteria(GrpcRouteCriteriaTestFactory.create())
.setEingangStub(GrpcEingangStubTestFactory.create());
}
}
......@@ -34,6 +34,6 @@ public class GrpcFormDataTestFactory {
public static Builder createBuilder() {
return GrpcFormData.newBuilder()
.addField(GrpcFormFieldTestFactory.create());
.addForm(GrpcSubFormTestFactory.create());
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment