Skip to content
Snippets Groups Projects
Commit c15f2e72 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-4693 create antragsteller mapper for formcycle adapter

parent c12258a3
Branches
Tags
No related merge requests found
package de.ozgcloud.eingang.semantik.enginebased.formcycle;
import java.util.Map;
import java.util.Optional;
import org.apache.commons.collections4.MapUtils;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.stereotype.Component;
import de.ozgcloud.eingang.common.formdata.Antragsteller;
import de.ozgcloud.eingang.common.formdata.FormData;
@Component
@ConditionalOnBean(FormCycleEngineBasedAdapter.class)
public class FormcycleAntragstellerMapper implements FormcycleEngineBasedMapper {
static final String KEY_ANTRAGSTELLER = "fsBKAllDaten";
static final String KEY_ANREDE = "tfAntragstellerAnrede";
static final String KEY_VORNAME = "tfAntragstellerVorname";
static final String KEY_NACHNAME = "tfAntragstellerNachname";
static final String KEY_GEBURTSNAME = "tfAntragstellerGeburtsname";
static final String KEY_GEBURTSDATUM = "tfAntragstellerGeburtsdatum";
static final String KEY_GEBURTSORT = "tfAntragstellerGeburtsort";
static final String KEY_EMAIL = "tfAntragstellerEmail";
static final String KEY_TELEFON = "tfAntragstellerTelefon";
static final String KEY_ADDRESS = "tfAntragstellerAdresse";
static final String KEY_PLZ = "tfAntragstellerPLZ";
static final String KEY_ORT = "tfAntragstellerOrt";
@Override
public FormData parseFormData(final FormData formData) {
return getAntragstellerData(formData.getFormData())
.map(this::buildAntragsteller)
.map(antragsteller -> formData.toBuilder().antragsteller(antragsteller).build())
.orElse(formData);
}
@SuppressWarnings("unchecked")
Optional<Map<String, Object>> getAntragstellerData(Map<String, Object> formDataMap) {
var antragstellerData = (Map<String, Object>) MapUtils.getMap(formDataMap, KEY_ANTRAGSTELLER);
return Optional.ofNullable(antragstellerData);
}
Antragsteller buildAntragsteller(Map<String, Object> antragstellerData) {
return Antragsteller.builder()
.anrede(MapUtils.getString(antragstellerData, KEY_ANREDE))
.vorname(MapUtils.getString(antragstellerData, KEY_VORNAME))
.nachname(MapUtils.getString(antragstellerData, KEY_NACHNAME))
.geburtsname(MapUtils.getString(antragstellerData, KEY_GEBURTSNAME))
.geburtsdatum(MapUtils.getString(antragstellerData, KEY_GEBURTSDATUM))
.geburtsort(MapUtils.getString(antragstellerData, KEY_GEBURTSORT))
.email(MapUtils.getString(antragstellerData, KEY_EMAIL))
.telefon(MapUtils.getString(antragstellerData, KEY_TELEFON))
.strasse(MapUtils.getString(antragstellerData, KEY_ADDRESS))
.plz(MapUtils.getString(antragstellerData, KEY_PLZ))
.ort(MapUtils.getString(antragstellerData, KEY_ORT))
.build();
}
}
package de.ozgcloud.eingang.semantik.enginebased.formcycle;
import de.ozgcloud.eingang.semantik.enginebased.EngineBasedMapper;
interface FormcycleEngineBasedMapper extends EngineBasedMapper {
}
package de.ozgcloud.eingang.semantik.enginebased.formcycle;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
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.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy;
import de.ozgcloud.eingang.common.formdata.Antragsteller;
import de.ozgcloud.eingang.common.formdata.AntragstellerTestFactory;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.formdata.FormDataTestFactory;
class FormcycleAntragstellerMapperTest {
@Spy
@InjectMocks
private FormcycleAntragstellerMapper mapper;
private static final Map<String, Object> ANTRAGSTELLER_DATA = new HashMap<>();
private static final Map<String, Object> ANTRAGSTELLER_MAP = Map.of("fsBKAllDaten", ANTRAGSTELLER_DATA);
@BeforeAll
static void fillAntragstellerData() {
ANTRAGSTELLER_DATA.put("tfAntragstellerAnrede", AntragstellerTestFactory.ANREDE);
ANTRAGSTELLER_DATA.put("tfAntragstellerVorname", AntragstellerTestFactory.VORNAME);
ANTRAGSTELLER_DATA.put("tfAntragstellerNachname", AntragstellerTestFactory.NACHNAME);
ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsname", AntragstellerTestFactory.GEBURTSNAME);
ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsdatum", AntragstellerTestFactory.GEBURTSDATUM);
ANTRAGSTELLER_DATA.put("tfAntragstellerGeburtsort", AntragstellerTestFactory.GEBURTSORT);
ANTRAGSTELLER_DATA.put("tfAntragstellerEmail", AntragstellerTestFactory.EMAIL);
ANTRAGSTELLER_DATA.put("tfAntragstellerTelefon", AntragstellerTestFactory.TELEFON);
ANTRAGSTELLER_DATA.put("tfAntragstellerAdresse", AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER);
ANTRAGSTELLER_DATA.put("tfAntragstellerPLZ", AntragstellerTestFactory.PLZ);
ANTRAGSTELLER_DATA.put("tfAntragstellerOrt", AntragstellerTestFactory.ORT);
}
@Nested
class TestParseFormData {
@Mock
private Antragsteller antragsteller;
@Test
void shouldCallGetAntragsteller() {
mapper.parseFormData(buildFormData());
verify(mapper).getAntragstellerData(ANTRAGSTELLER_MAP);
}
@Test
void shouldCallBuildAntragsteller() {
doReturn(Optional.of(ANTRAGSTELLER_DATA)).when(mapper).getAntragstellerData(anyMap());
mapper.parseFormData(buildFormData());
verify(mapper).buildAntragsteller(ANTRAGSTELLER_DATA);
}
@Test
void shouldSetAntragsteller() {
doReturn(antragsteller).when(mapper).buildAntragsteller(anyMap());
var formData = mapper.parseFormData(buildFormData());
assertThat(formData.getAntragsteller()).isSameAs(antragsteller);
}
@Test
void shouldReturnSameFormData() {
var formData = FormDataTestFactory.create();
var result = mapper.parseFormData(formData);
assertThat(result).isSameAs(formData);
}
FormData buildFormData() {
return FormData.builder().formData(ANTRAGSTELLER_MAP).build();
}
}
@Nested
class TestGetAntragstellerData {
@Test
void shouldReturnEmpty() {
Map<String, Object> formDataMap = Map.of("key", "value");
var result = mapper.getAntragstellerData(formDataMap);
assertThat(result).isEmpty();
}
@Test
void shouldReturnAntragstellerData() {
var result = mapper.getAntragstellerData(ANTRAGSTELLER_MAP);
assertThat(result).contains(ANTRAGSTELLER_DATA);
}
}
@Nested
class TestBuildAntragsteller {
@Test
void shouldSetAnrede() {
var result = buildAntragsteller();
assertThat(result.getAnrede()).isEqualTo(AntragstellerTestFactory.ANREDE);
}
@Test
void shouldSetVorname() {
var result = buildAntragsteller();
assertThat(result.getVorname()).isEqualTo(AntragstellerTestFactory.VORNAME);
}
@Test
void shouldSetNachname() {
var result = buildAntragsteller();
assertThat(result.getNachname()).isEqualTo(AntragstellerTestFactory.NACHNAME);
}
@Test
void shouldSetGeburtsname() {
var result = buildAntragsteller();
assertThat(result.getGeburtsname()).isEqualTo(AntragstellerTestFactory.GEBURTSNAME);
}
@Test
void shouldSetGeburtsdatum() {
var result = buildAntragsteller();
assertThat(result.getGeburtsdatum()).isEqualTo(AntragstellerTestFactory.GEBURTSDATUM);
}
@Test
void shouldSetGeburtsort() {
var result = buildAntragsteller();
assertThat(result.getGeburtsort()).isEqualTo(AntragstellerTestFactory.GEBURTSORT);
}
@Test
void shouldSetEmail() {
var result = buildAntragsteller();
assertThat(result.getEmail()).isEqualTo(AntragstellerTestFactory.EMAIL);
}
@Test
void shouldSetTelefon() {
var result = buildAntragsteller();
assertThat(result.getTelefon()).isEqualTo(AntragstellerTestFactory.TELEFON);
}
@Test
void shouldSetStrasse() {
var result = buildAntragsteller();
assertThat(result.getStrasse()).isEqualTo(AntragstellerTestFactory.STRASSE + " " + AntragstellerTestFactory.HAUSNUMMER);
}
@Test
void shouldSetPlz() {
var result = buildAntragsteller();
assertThat(result.getPlz()).isEqualTo(AntragstellerTestFactory.PLZ);
}
@Test
void shouldSetOrt() {
var result = buildAntragsteller();
assertThat(result.getOrt()).isEqualTo(AntragstellerTestFactory.ORT);
}
Antragsteller buildAntragsteller() {
return mapper.buildAntragsteller(ANTRAGSTELLER_DATA);
}
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment