diff --git a/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java b/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java index d5f6c9ef528895e290290279889cb2fbb464c3e0..81826cff9dccf04d8b16040f00f1d8c4f967e8a0 100644 --- a/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/formdata/Antragsteller.java @@ -33,6 +33,7 @@ import lombok.Getter; public class Antragsteller { private String anrede; + private String firmaName; private String vorname; private String nachname; private String geburtsname; diff --git a/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java b/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java index c3f5320bc928490b407bf0ff8a83b192566eb0d7..6a506945dc9822cafcc2f1dc37d7ecedb6405b6c 100644 --- a/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/formdata/AntragstellerTestFactory.java @@ -30,6 +30,7 @@ public class AntragstellerTestFactory { public static final String ANREDE = "Herr"; + public static final String FIRMA_NAME = "Firma X"; public static final String GEBIET_BEZEICHNUNG_KEY = "GebietBEZEICHNUNG"; public static final String GEBIET_BEZEICHNUNG_VALUE = "Schleswig"; @@ -54,6 +55,18 @@ public class AntragstellerTestFactory { return createBuilder().build(); } + public static Antragsteller createFirm() { + return createFirmBuilder().build(); + } + + public static Antragsteller.AntragstellerBuilder createFirmBuilder() { + return createBuilder() + .firmaName(FIRMA_NAME) + .geburtsname(null) + .geburtsdatum(null) + .geburtsort(null); + } + public static Antragsteller.AntragstellerBuilder createBuilder() { return Antragsteller.builder() .anrede(ANREDE) diff --git a/pom.xml b/pom.xml index 8f8b61c4ea856454bc2a1ce111be3fec068950ef..842a106415d04ecc600bdefb8a236e9b447aa6ca 100644 --- a/pom.xml +++ b/pom.xml @@ -54,7 +54,7 @@ </modules> <properties> - <vorgang-manager.version>2.6.0</vorgang-manager.version> + <vorgang-manager.version>2.7.0-SNAPSHOT</vorgang-manager.version> <jsoup.version>1.14.3</jsoup.version> <xmlschema.version>2.3.0</xmlschema.version> diff --git a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java index b0348cc39fa405d1b7ea467d6d99e2a5ee5db4f0..3909125566b6f297d16633590aa4dcc05644611b 100644 --- a/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java +++ b/router/src/test/java/de/ozgcloud/eingang/router/GrpcEingangMapperTest.java @@ -69,6 +69,13 @@ class GrpcEingangMapperTest { } + @Test + void shouldMapFirmaName() { + var mapped = mapper.toAntragsteller(AntragstellerTestFactory.createFirm()); + + assertThat(mapped.getFirmaName()).isEqualTo(AntragstellerTestFactory.FIRMA_NAME); + } + private GrpcAntragsteller toAntragsteller() { return mapper.toAntragsteller(AntragstellerTestFactory.create()); } diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java index 4e5251da5812a678dd2234ab964de002cabd78e8..be2eb0cde5339c900477a2e6554b0612b62afce9 100644 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapper.java @@ -27,10 +27,12 @@ import static java.util.Objects.*; import java.util.Collections; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; +import org.apache.commons.collections.MapUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -57,6 +59,15 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { static final String PLZ = "sh_plz"; static final String ORT = "ort"; + static final String FIELD_FIRMA_NAME = "firm_name"; + static final String FIELD_FIRMA_STRASSE = "firma_strasse"; + static final String FIELD_FIRMA_HAUSNUMMER = "firma_hausnummer"; + static final String FIELD_FIRMA_PLZ = "firma_plz"; + static final String FIELD_FIRMA_STADT = "firma_stadt"; + static final String FIELD_ANSPRECHPARTNER_ANREDE = "firma_ansprechpartner_anrede"; + static final String FIELD_ANSPRECHPARTNER_VORNAME = "firma_ansprechpartner_vorname"; + static final String FIELD_ANSPRECHPARTNER_NACHNAME = "firma_ansprechpartner_nachname"; + @Autowired private AfmAntragstellerHeaderMapper antragstellerHeaderMapper; @@ -81,15 +92,21 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { return (String) formDataMap.get(POSTFACH_ID); } - @SuppressWarnings("unchecked") private Optional<Map<String, Object>> getAntragstellerMap(Map<String, Object> formDataMap) { return Optional.ofNullable(formDataMap.get(ANTRAGSTELLER)) .or(() -> Optional.ofNullable(formDataMap.get(ANTRAGSTELLER_UPPERCASE))) - .map(Map.class::cast).map(LinkedHashMap::new); + .map(Map.class::cast).map(LinkedHashMap<String, Object>::new); } private Antragsteller.AntragstellerBuilder addAntragstellerData(Antragsteller.AntragstellerBuilder builder, Map<String, Object> antragstellerMap) { + return isNull(antragstellerMap.get(FIELD_FIRMA_NAME)) + ? addPrivateAntragstellerData(builder, antragstellerMap) + : addFirmAntragstellerData(builder, antragstellerMap); + } + + private Antragsteller.AntragstellerBuilder addPrivateAntragstellerData(Antragsteller.AntragstellerBuilder builder, + Map<String, Object> antragstellerMap) { return builder // .anrede((String) antragstellerMap.get(ANREDE)) // .vorname((String) antragstellerMap.get(VORNAME)) // @@ -103,17 +120,37 @@ class AfmAntragstellerMapper implements AfmEngineBasedMapper { .hausnummer((String) antragstellerMap.get(HAUSNUMMER)) // .plz((String) antragstellerMap.get(PLZ)) // .ort((String) antragstellerMap.get(ORT)) // - .data(getNotMappedData(antragstellerMap)); + .data(getNotMappedData(antragstellerMap, getPrivateFields())); + } + + Antragsteller.AntragstellerBuilder addFirmAntragstellerData(Antragsteller.AntragstellerBuilder builder, + Map<String, Object> antragstellerMap) { + return builder + .firmaName(MapUtils.getString(antragstellerMap, FIELD_FIRMA_NAME)) + .strasse(MapUtils.getString(antragstellerMap, FIELD_FIRMA_STRASSE)) + .hausnummer(MapUtils.getString(antragstellerMap, FIELD_FIRMA_HAUSNUMMER)) + .plz(MapUtils.getString(antragstellerMap, FIELD_FIRMA_PLZ)) + .ort(MapUtils.getString(antragstellerMap, FIELD_FIRMA_STADT)) + .anrede(MapUtils.getString(antragstellerMap, FIELD_ANSPRECHPARTNER_ANREDE)) + .vorname(MapUtils.getString(antragstellerMap, FIELD_ANSPRECHPARTNER_VORNAME)) + .nachname(MapUtils.getString(antragstellerMap, FIELD_ANSPRECHPARTNER_NACHNAME)) + .telefon(MapUtils.getString(antragstellerMap, TELEFON)) + .email(MapUtils.getString(antragstellerMap, EMAIL)) + .data(getNotMappedData(antragstellerMap, getFirmaFields())); + } + + private Map<String, Object> getNotMappedData(Map<String, Object> antragstellerMap, Set<String> mappedFields) { + return antragstellerMap.entrySet().stream().filter(entry -> !mappedFields.contains(entry.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (key1, key2) -> key1, LinkedHashMap::new)); } - private Map<String, Object> getNotMappedData(Map<String, Object> antragstellerMap) { - var map = new LinkedHashMap<>(antragstellerMap); - getFields().forEach(map::remove); - return map; + private Set<String> getPrivateFields() { + return Set.of(ANREDE, VORNAME, NACHNAME, GEBURTSNAME, GEBURTSDATUM, GEBURTSORT, EMAIL, TELEFON, STRASSE, HAUSNUMMER, PLZ, ORT); } - private List<String> getFields() { - return List.of(ANREDE, VORNAME, NACHNAME, GEBURTSNAME, GEBURTSDATUM, GEBURTSORT, EMAIL, TELEFON, STRASSE, HAUSNUMMER, PLZ, ORT); + private Set<String> getFirmaFields() { + return Set.of(FIELD_FIRMA_NAME, FIELD_FIRMA_STRASSE, FIELD_FIRMA_HAUSNUMMER, FIELD_FIRMA_PLZ, FIELD_FIRMA_STADT, + FIELD_ANSPRECHPARTNER_ANREDE, FIELD_ANSPRECHPARTNER_VORNAME, FIELD_ANSPRECHPARTNER_NACHNAME, TELEFON, EMAIL); } private Map<String, Object> removeMappedData(Map<String, Object> formDataMap) { diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java index a8d133be63359eca9db5d610c01f4bfd144f1a96..ab351eb8f849b811373de9c7e4f2b95e0d080086 100644 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapper.java @@ -1,5 +1,7 @@ package de.ozgcloud.eingang.semantik.enginebased.formcycle; +import static org.apache.commons.lang3.StringUtils.*; + import java.util.Map; import java.util.Optional; @@ -25,6 +27,7 @@ public class FormcycleAntragstellerMapper implements FormcycleEngineBasedMapper static final String KEY_ADDRESS = "tfAntragstellerAdresse"; static final String KEY_PLZ = "tfAntragstellerPLZ"; static final String KEY_ORT = "tfAntragstellerOrt"; + static final String KEY_FIRMA_NAME = "tfOrgName"; @Override public FormData parseFormData(final FormData formData) { @@ -41,19 +44,26 @@ public class FormcycleAntragstellerMapper implements FormcycleEngineBasedMapper } Antragsteller buildAntragsteller(Map<String, Object> antragstellerData) { - return Antragsteller.builder() + var firmaName = getValue(antragstellerData, KEY_FIRMA_NAME); + var antragstellerBuilder = Antragsteller.builder() + .firmaName(firmaName) .anrede(getValue(antragstellerData, KEY_ANREDE)) .vorname(getValue(antragstellerData, KEY_VORNAME)) .nachname(getValue(antragstellerData, KEY_NACHNAME)) - .geburtsname(getValue(antragstellerData, KEY_GEBURTSNAME)) - .geburtsdatum(getValue(antragstellerData, KEY_GEBURTSDATUM)) - .geburtsort(getValue(antragstellerData, KEY_GEBURTSORT)) .email(getValue(antragstellerData, KEY_EMAIL)) .telefon(getValue(antragstellerData, KEY_TELEFON)) .strasse(getValue(antragstellerData, KEY_ADDRESS)) .plz(getValue(antragstellerData, KEY_PLZ)) - .ort(getValue(antragstellerData, KEY_ORT)) - .build(); + .ort(getValue(antragstellerData, KEY_ORT)); + if (isBlank(firmaName)) { + antragstellerBuilder + .geburtsname(getValue(antragstellerData, KEY_GEBURTSNAME)) + .geburtsdatum(getValue(antragstellerData, KEY_GEBURTSDATUM)) + .geburtsort(getValue(antragstellerData, KEY_GEBURTSORT)); + }else { + antragstellerBuilder.firmaName(firmaName); + } + return antragstellerBuilder.build(); } String getValue(Map<String, Object> formDataMap, String key) { diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java index e40b13db45356729cd68b0fec172931b999c4c17..f68df9df3da7a3905ef9a4dc0fdd9a96c112c890 100644 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerMapperTest.java @@ -37,11 +37,9 @@ import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.Mockito; import de.ozgcloud.eingang.common.formdata.Antragsteller; import de.ozgcloud.eingang.common.formdata.FormData; -import de.ozgcloud.eingang.semantik.enginebased.afm.AfmAntragstellerMapper; class AfmAntragstellerMapperTest { @@ -52,7 +50,7 @@ class AfmAntragstellerMapperTest { private AfmAntragstellerHeaderMapper antragstellerHeaderMapper; private FormData formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap()).build(); - + @DisplayName("Parse form data") @Nested class TestParseFormData { @@ -88,7 +86,8 @@ class AfmAntragstellerMapperTest { @Test @DisplayName("should map antragsteller when key starts with an uppercase letter") void shouldMapAntragstellerUppercase() { - formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).build(); + formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)) + .build(); var parsedFormData = parseFormData(formData); @@ -99,7 +98,8 @@ class AfmAntragstellerMapperTest { @Test @DisplayName("should map only antragsteller key when both present") void shouldMapOnlyOneKey() { - var expectedAntragsteller = AfmAntragstellerTestFactory.createBuilder().anrede("anrede").vorname("firstName").nachname("lastName").build(); + var expectedAntragsteller = AfmAntragstellerTestFactory.createBuilder().anrede("anrede").vorname("firstName").nachname("lastName") + .build(); var parsedFormData = parseFormData(createFormData(expectedAntragsteller)); @@ -109,7 +109,7 @@ class AfmAntragstellerMapperTest { private FormData createFormData(Antragsteller antragsteller) { var formDataMap = AfmAntragstellerTestFactory.createMutableFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE); - var antragstelleMap = AfmAntragstellerTestFactory.createAntragstelleMap( + var antragstelleMap = AfmAntragstellerTestFactory.createPrivateAntragstelleMap( MapEntry.entry(AfmAntragstellerMapper.ANREDE, antragsteller.getAnrede()), MapEntry.entry(AfmAntragstellerMapper.VORNAME, antragsteller.getVorname()), MapEntry.entry(AfmAntragstellerMapper.NACHNAME, antragsteller.getNachname()) @@ -118,9 +118,9 @@ class AfmAntragstellerMapperTest { return FormData.builder().formData(formDataMap).build(); } - @DisplayName("map antragsteller data") + @DisplayName("map private antragsteller data") @Nested - class TestMapAntragstellerData { + class TestMapPrivateAntragstellerData { @Test void shouldMapPostfachId() { @@ -140,7 +140,8 @@ class AfmAntragstellerMapperTest { @BeforeEach void buildFormData() { - var antragstellerMap = AfmAntragstellerTestFactory.createAntragstelleMap(MapEntry.entry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE)); + var antragstellerMap = AfmAntragstellerTestFactory.createPrivateAntragstelleMap( + MapEntry.entry(NOT_MAPPED_FIELD, NOT_MAPPED_VALUE)); var formDataMap = new HashMap<String, Object>(); formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, antragstellerMap); @@ -176,9 +177,9 @@ class AfmAntragstellerMapperTest { } } - @DisplayName("remove fields") + @DisplayName("remove private fields") @Nested - class TestRemoveFields { + class TestRemovePrivateFields { @Test void shouldRemoveAntragsteller() { @@ -190,7 +191,8 @@ class AfmAntragstellerMapperTest { @Test @DisplayName("should remove Antragsteller when key starts with an uppercase latter") void shouldRemoveAntragstellerUppercase() { - formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)).build(); + formData = FormData.builder().formData(AfmAntragstellerTestFactory.createFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE)) + .build(); var parsedFormData = parseFormData(formData); @@ -207,12 +209,31 @@ class AfmAntragstellerMapperTest { private FormData createFormData() { var formDataMap = AfmAntragstellerTestFactory.createMutableFormDataMap(AfmAntragstellerMapper.ANTRAGSTELLER_UPPERCASE); - formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, AfmAntragstellerTestFactory.createAntragstelleMap()); + formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, AfmAntragstellerTestFactory.createPrivateAntragstelleMap()); return FormData.builder().formData(formDataMap).build(); } } } + @Nested + class TestMapFirmAntragstellerData { + + @Test + void shouldMapFirmAntragstellerData() { + var parsedFormData = parseFormData(createFormData()); + + assertThat(parsedFormData.getAntragsteller()).usingRecursiveComparison() + .ignoringFields("data") + .isEqualTo(AfmAntragstellerTestFactory.createFirm()); + } + + private FormData createFormData() { + var formDataMap = AfmAntragstellerTestFactory.createFormDataMap(); + formDataMap.put(AfmAntragstellerMapper.ANTRAGSTELLER, AfmAntragstellerTestFactory.createFirmAntragstelleMap()); + return FormData.builder().formData(formDataMap).build(); + } + } + private FormData parseFormData(FormData formData) { return mapper.parseFormData(formData); } diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java index b127c5a0d30be66e723c7b1744378b5b613e3043..bcdf3985f30f88c7fe5d1a0d47f669aca86942b6 100644 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/afm/AfmAntragstellerTestFactory.java @@ -32,11 +32,11 @@ import java.util.UUID; import org.assertj.core.data.MapEntry; import de.ozgcloud.eingang.common.formdata.Antragsteller; -import de.ozgcloud.eingang.semantik.enginebased.afm.AfmAntragstellerMapper; public class AfmAntragstellerTestFactory { public static final String ANREDE = "Herr"; + public static final String FIRMA_NAME = "Firma X"; public static final String VORNAME = "Max"; public static final String NACHNAME = "Mustermann"; public static final String GEBURTSNAME = "Maxi"; @@ -55,6 +55,15 @@ public class AfmAntragstellerTestFactory { return createBuilder().build(); } + public static Antragsteller createFirm() { + return createBuilder() + .firmaName(FIRMA_NAME) + .geburtsname(null) + .geburtsdatum(null) + .geburtsort(null) + .build(); + } + public static Antragsteller.AntragstellerBuilder createBuilder() { return Antragsteller.builder() .anrede(ANREDE) @@ -77,18 +86,18 @@ public class AfmAntragstellerTestFactory { } public static Map<String, Object> createFormDataMap(String antragstellerKey) { - return Collections.unmodifiableMap(createMutableFormDataMap(antragstellerKey)); + return createMutableFormDataMap(antragstellerKey); } public static Map<String, Object> createMutableFormDataMap(String antragstellerKey) { var map = new HashMap<String, Object>(); - map.put(antragstellerKey, createAntragstelleMap()); + map.put(antragstellerKey, createPrivateAntragstelleMap()); map.put(AfmAntragstellerMapper.POSTFACH_ID, POSTFACH_ID); return map; } @SafeVarargs - public static Map<String, Object> createAntragstelleMap(MapEntry<String, Object>... additionalEntries) { + public static Map<String, Object> createPrivateAntragstelleMap(MapEntry<String, Object>... additionalEntries) { var map = new HashMap<String, Object>(); map.put(AfmAntragstellerMapper.ANREDE, ANREDE); map.put(AfmAntragstellerMapper.VORNAME, VORNAME); @@ -107,4 +116,23 @@ public class AfmAntragstellerTestFactory { return Collections.unmodifiableMap(map); } + + @SafeVarargs + public static Map<String, Object> createFirmAntragstelleMap(MapEntry<String, Object>... additionalEntries) { + var map = new HashMap<String, Object>(); + map.put(AfmAntragstellerMapper.FIELD_FIRMA_NAME, FIRMA_NAME); + map.put(AfmAntragstellerMapper.FIELD_ANSPRECHPARTNER_ANREDE, ANREDE); + map.put(AfmAntragstellerMapper.FIELD_ANSPRECHPARTNER_VORNAME, VORNAME); + map.put(AfmAntragstellerMapper.FIELD_ANSPRECHPARTNER_NACHNAME, NACHNAME); + map.put(AfmAntragstellerMapper.EMAIL, EMAIL); + map.put(AfmAntragstellerMapper.TELEFON, TELEFON); + map.put(AfmAntragstellerMapper.FIELD_FIRMA_STRASSE, STRASSE); + map.put(AfmAntragstellerMapper.FIELD_FIRMA_HAUSNUMMER, HAUSNUMMER); + map.put(AfmAntragstellerMapper.FIELD_FIRMA_PLZ, PLZ); + map.put(AfmAntragstellerMapper.FIELD_FIRMA_STADT, ORT); + + Arrays.stream(additionalEntries).forEach(entry -> map.put(entry.getKey(), entry.getValue())); + + return Collections.unmodifiableMap(map); + } } \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java index ecce809dfc165ebda375212fcc659021b9f8ea76..4bcbc1cba5239aeffb34b319eb5d0d81b54bc5a7 100644 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/formcycle/FormcycleAntragstellerMapperTest.java @@ -7,8 +7,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; -import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; @@ -28,23 +27,9 @@ class FormcycleAntragstellerMapperTest { private static final String VALUE_KEY = "value"; private static final String LABEL_KEY = "label"; - private static final Map<String, Object> ANTRAGSTELLER_DATA = new HashMap<>(); - private static final Map<String, Object> ANTRAGSTELLER_MAP = Map.of("fsBKAllDaten", Map.of(VALUE_KEY, ANTRAGSTELLER_DATA)); - - @BeforeAll - static void fillAntragstellerData() { - ANTRAGSTELLER_DATA.put("tfAntragstellerAnrede", Map.of(VALUE_KEY, AntragstellerTestFactory.ANREDE, LABEL_KEY, "Anrede")); - ANTRAGSTELLER_DATA.put("tfAntragstellerVorname", Map.of(LABEL_KEY, "Vorname", VALUE_KEY, AntragstellerTestFactory.VORNAME)); - ANTRAGSTELLER_DATA.put("tfAntragstellerName", Map.of(VALUE_KEY, AntragstellerTestFactory.NACHNAME, LABEL_KEY, "Nachname")); - ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsname", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSNAME, LABEL_KEY, "Geburtsname")); - ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsdatum", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSDATUM, LABEL_KEY, "Geburtsdatum")); - ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsort", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSORT, LABEL_KEY, "Geburtsort")); - ANTRAGSTELLER_DATA.put("tfAntragstellerEmail", Map.of(VALUE_KEY, AntragstellerTestFactory.EMAIL, LABEL_KEY, "E-Mail")); - ANTRAGSTELLER_DATA.put("tfAntragstellerTelefon", Map.of(VALUE_KEY, AntragstellerTestFactory.TELEFON, LABEL_KEY, "Telefon")); - ANTRAGSTELLER_DATA.put("tfAntragstellerAdresse", Map.of(LABEL_KEY, "Adresse", VALUE_KEY, AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER)); - ANTRAGSTELLER_DATA.put("tfAntragstellerPLZ", Map.of(LABEL_KEY, "PLZ", VALUE_KEY, AntragstellerTestFactory.PLZ)); - ANTRAGSTELLER_DATA.put("tfAntragstellerOrt", Map.of(LABEL_KEY, "Ort", VALUE_KEY, AntragstellerTestFactory.ORT)); - } + + private Map<String, Object> antragstellerData = new HashMap<>(); + private Map<String, Object> antragstellerMap = Map.of("fsBKAllDaten", Map.of(VALUE_KEY, antragstellerData)); @Nested class TestParseFormData { @@ -56,16 +41,16 @@ class FormcycleAntragstellerMapperTest { void shouldCallGetAntragsteller() { mapper.parseFormData(buildFormData()); - verify(mapper).getAntragstellerData(ANTRAGSTELLER_MAP); + verify(mapper).getAntragstellerData(antragstellerMap); } @Test void shouldCallBuildAntragsteller() { - doReturn(Optional.of(ANTRAGSTELLER_DATA)).when(mapper).getAntragstellerData(anyMap()); + doReturn(Optional.of(antragstellerData)).when(mapper).getAntragstellerData(anyMap()); mapper.parseFormData(buildFormData()); - verify(mapper).buildAntragsteller(ANTRAGSTELLER_DATA); + verify(mapper).buildAntragsteller(antragstellerData); } @Test @@ -87,7 +72,7 @@ class FormcycleAntragstellerMapperTest { } FormData buildFormData() { - return FormData.builder().formData(ANTRAGSTELLER_MAP).build(); + return FormData.builder().formData(antragstellerMap).build(); } } @@ -105,9 +90,9 @@ class FormcycleAntragstellerMapperTest { @Test void shouldReturnAntragstellerData() { - var result = mapper.getAntragstellerData(ANTRAGSTELLER_MAP); + var result = mapper.getAntragstellerData(antragstellerMap); - assertThat(result).contains(ANTRAGSTELLER_DATA); + assertThat(result).contains(antragstellerData); } } @@ -116,6 +101,8 @@ class FormcycleAntragstellerMapperTest { @Test void shouldSetAnrede() { + antragstellerData.put("tfAntragstellerAnrede", Map.of(VALUE_KEY, AntragstellerTestFactory.ANREDE, LABEL_KEY, "Anrede")); + var result = buildAntragsteller(); assertThat(result.getAnrede()).isEqualTo(AntragstellerTestFactory.ANREDE); @@ -123,6 +110,8 @@ class FormcycleAntragstellerMapperTest { @Test void shouldSetVorname() { + antragstellerData.put("tfAntragstellerVorname", Map.of(LABEL_KEY, "Vorname", VALUE_KEY, AntragstellerTestFactory.VORNAME)); + var result = buildAntragsteller(); assertThat(result.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME); @@ -130,6 +119,8 @@ class FormcycleAntragstellerMapperTest { @Test void shouldSetNachname() { + antragstellerData.put("tfAntragstellerName", Map.of(VALUE_KEY, AntragstellerTestFactory.NACHNAME, LABEL_KEY, "Nachname")); + var result = buildAntragsteller(); assertThat(result.getNachname()).isEqualTo(AntragstellerTestFactory.NACHNAME); @@ -137,6 +128,8 @@ class FormcycleAntragstellerMapperTest { @Test void shouldSetGeburtsname() { + antragstellerData.put("tfAntragstellerGeburtsname", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSNAME, LABEL_KEY, "Geburtsname")); + var result = buildAntragsteller(); assertThat(result.getGeburtsname()).isEqualTo(AntragstellerTestFactory.GEBURTSNAME); @@ -144,6 +137,8 @@ class FormcycleAntragstellerMapperTest { @Test void shouldSetGeburtsdatum() { + antragstellerData.put("tfAntragstellerGeburtsdatum", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSDATUM, LABEL_KEY, "Geburtsdatum")); + var result = buildAntragsteller(); assertThat(result.getGeburtsdatum()).isEqualTo(AntragstellerTestFactory.GEBURTSDATUM); @@ -151,6 +146,8 @@ class FormcycleAntragstellerMapperTest { @Test void shouldSetGeburtsort() { + antragstellerData.put("tfAntragstellerGeburtsort", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSORT, LABEL_KEY, "Geburtsort")); + var result = buildAntragsteller(); assertThat(result.getGeburtsort()).isEqualTo(AntragstellerTestFactory.GEBURTSORT); @@ -158,6 +155,8 @@ class FormcycleAntragstellerMapperTest { @Test void shouldSetEmail() { + antragstellerData.put("tfAntragstellerEmail", Map.of(VALUE_KEY, AntragstellerTestFactory.EMAIL, LABEL_KEY, "E-Mail")); + var result = buildAntragsteller(); assertThat(result.getEmail()).isEqualTo(AntragstellerTestFactory.EMAIL); @@ -165,6 +164,8 @@ class FormcycleAntragstellerMapperTest { @Test void shouldSetTelefon() { + antragstellerData.put("tfAntragstellerTelefon", Map.of(VALUE_KEY, AntragstellerTestFactory.TELEFON, LABEL_KEY, "Telefon")); + var result = buildAntragsteller(); assertThat(result.getTelefon()).isEqualTo(AntragstellerTestFactory.TELEFON); @@ -172,6 +173,9 @@ class FormcycleAntragstellerMapperTest { @Test void shouldSetAdresse() { + antragstellerData.put("tfAntragstellerAdresse", + Map.of(LABEL_KEY, "Adresse", VALUE_KEY, AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER)); + var result = buildAntragsteller(); assertThat(result.getStrasse()).isEqualTo(AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER); @@ -179,6 +183,8 @@ class FormcycleAntragstellerMapperTest { @Test void shouldSetPlz() { + antragstellerData.put("tfAntragstellerPLZ", Map.of(LABEL_KEY, "PLZ", VALUE_KEY, AntragstellerTestFactory.PLZ)); + var result = buildAntragsteller(); assertThat(result.getPlz()).isEqualTo(AntragstellerTestFactory.PLZ); @@ -186,13 +192,48 @@ class FormcycleAntragstellerMapperTest { @Test void shouldSetOrt() { + antragstellerData.put("tfAntragstellerOrt", Map.of(LABEL_KEY, "Ort", VALUE_KEY, AntragstellerTestFactory.ORT)); + var result = buildAntragsteller(); assertThat(result.getOrt()).isEqualTo(AntragstellerTestFactory.ORT); } Antragsteller buildAntragsteller() { - return mapper.buildAntragsteller(ANTRAGSTELLER_DATA); + return mapper.buildAntragsteller(antragstellerData); + } + } + + @Nested + class TestBuildFirmaAntragsteller { + + @BeforeEach + void fillAntragstellerData() { + antragstellerData.put("tfOrgName", Map.of(VALUE_KEY, AntragstellerTestFactory.FIRMA_NAME, LABEL_KEY, "Firmenname")); + antragstellerData.put("tfAntragstellerAnrede", Map.of(VALUE_KEY, AntragstellerTestFactory.ANREDE, LABEL_KEY, "Anrede")); + antragstellerData.put("tfAntragstellerVorname", Map.of(LABEL_KEY, "Vorname", VALUE_KEY, AntragstellerTestFactory.VORNAME)); + antragstellerData.put("tfAntragstellerName", Map.of(VALUE_KEY, AntragstellerTestFactory.NACHNAME, LABEL_KEY, "Nachname")); + antragstellerData.put("tfAntragstellerGeburtsname", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSNAME, LABEL_KEY, "Geburtsname")); + antragstellerData.put("tfAntragstellerGeburtsdatum", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSDATUM, LABEL_KEY, "Geburtsdatum")); + antragstellerData.put("tfAntragstellerGeburtsort", Map.of(VALUE_KEY, AntragstellerTestFactory.GEBURTSORT, LABEL_KEY, "Geburtsort")); + antragstellerData.put("tfAntragstellerEmail", Map.of(VALUE_KEY, AntragstellerTestFactory.EMAIL, LABEL_KEY, "E-Mail")); + antragstellerData.put("tfAntragstellerTelefon", Map.of(VALUE_KEY, AntragstellerTestFactory.TELEFON, LABEL_KEY, "Telefon")); + antragstellerData.put("tfAntragstellerAdresse", + Map.of(LABEL_KEY, "Adresse", VALUE_KEY, AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER)); + antragstellerData.put("tfAntragstellerPLZ", Map.of(LABEL_KEY, "PLZ", VALUE_KEY, AntragstellerTestFactory.PLZ)); + antragstellerData.put("tfAntragstellerOrt", Map.of(LABEL_KEY, "Ort", VALUE_KEY, AntragstellerTestFactory.ORT)); } + + @Test + void shouldMapFirmaData() { + var expectedAntragsteller = AntragstellerTestFactory.createFirmBuilder() + .strasse("%s %s".formatted(AntragstellerTestFactory.STRASSE, AntragstellerTestFactory.HAUSNUMMER)) + .hausnummer(null).postfachId(null).data(null).build(); + + var result = mapper.buildAntragsteller(antragstellerData); + + assertThat(result).usingRecursiveComparison().isEqualTo(expectedAntragsteller); + } + } } \ No newline at end of file