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

OZG-4375 OZG-4790 CR

parent 1d07f21e
No related branches found
No related tags found
No related merge requests found
......@@ -32,7 +32,6 @@ class FormDataMapper {
public Antragsdaten toAntragsdaten(@NotNull VorgangWithEingang vorgang) {
return Optional.ofNullable(vorgang.getEingang())
.map(Eingang::getFormData)
.map(ValueKeysRemover::removeValueKeys)
.map(this::buildAntragsdaten)
.orElseGet(Antragsdaten::new);
}
......
package de.ozgcloud.alfa.vorgang;
import java.util.HashMap;
import java.util.Map;
class ValueKeysRemover {
static final String VALUE_KEY = "value";
public static Map<String, Object> removeValueKeys(Map<String, Object> formData) {
Map<String, Object> result = new HashMap<>();
for (var entry : formData.entrySet()) {
result.put(entry.getKey(), removeValueKeysFromValue(entry.getValue()));
}
return result;
}
@SuppressWarnings("unchecked")
private static Object removeValueKeysFromValue(Object value) {
if (!(value instanceof Map)) {
return value;
}
Map<String, Object> formData = (Map<String, Object>) value;
return containsValueKeyAsSingleEntry(formData) ?
removeValueKeysFromValue(formData.get(VALUE_KEY)) :
removeValueKeys(formData);
}
private static boolean containsValueKeyAsSingleEntry(Map<String, Object> formData) {
return formData.containsKey(VALUE_KEY) && formData.size() == 1;
}
}
package de.ozgcloud.alfa.vorgang;
import de.xoev.xdomea.AnwendungsspezifischeErweiterungXMLType;
public class AnwendungsspezifischeErweiterungXMLTypeTestFactory {
public static AnwendungsspezifischeErweiterungXMLType create() {
return new AnwendungsspezifischeErweiterungXMLType();
}
}
......@@ -8,14 +8,12 @@ import java.time.ZonedDateTime;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockedStatic;
import org.mockito.Spy;
import de.ozgcloud.alfa.common.DateConverter;
......@@ -44,17 +42,13 @@ class FormDataMapperTest {
private VorgangWithEingang vorgang;
@Test
void shouldCallBuildAntragsdaten() {
try (MockedStatic<ValueKeysRemover> valueKeysRemover = mockStatic(ValueKeysRemover.class)) {
var vorgang = VorgangWithEingangTestFactory.create();
Map<String, Object> formDataWithoutValueKeys = Map.of(UUID.randomUUID().toString(), "value1");
valueKeysRemover.when(() -> ValueKeysRemover.removeValueKeys(any())).thenReturn(formDataWithoutValueKeys);
doReturn(new Object()).when(formDataMapper).formatValue(any(), any());
void shouldCallBuildItemType() {
doReturn(new Object()).when(formDataMapper).formatValue(any(), any());
var vorgang = VorgangWithEingangTestFactory.create();
formDataMapper.toAntragsdaten(vorgang);
formDataMapper.toAntragsdaten(vorgang);
verify(formDataMapper).buildAntragsdaten(formDataWithoutValueKeys);
}
verify(formDataMapper).buildAntragsdaten(vorgang.getEingang().getFormData());
}
@Test
......
package de.ozgcloud.alfa.vorgang;
import static org.assertj.core.api.Assertions.*;
import java.util.Map;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
public class ValueKeysRemoverTest {
@Nested
class TestRemoveValueKeys {
@Test
void shouldPreserveValueKeyWithoutParent() {
Map<String, Object> formData = Map.of("value", "Kiel");
var formDataWithoutValueKeys = ValueKeysRemover.removeValueKeys(formData);
assertThat(formDataWithoutValueKeys).isEqualTo(formData);
}
@Test
void shouldEliminateValueKeyWithoutSiblings() {
Map<String, Object> formData = Map.of("ort", Map.of("value", "Kiel"));
Map<String, Object> expected = Map.of("ort", "Kiel");
var formDataWithoutValueKeys = ValueKeysRemover.removeValueKeys(formData);
assertThat(formDataWithoutValueKeys).isEqualTo(expected);
}
@Test
void shouldPreserveValueKeyIfHasSiblings() {
Map<String, Object> formData = Map.of("ort", Map.of("value", "Kiel", "value2", "Kiel"));
var formDataWithoutValueKeys = ValueKeysRemover.removeValueKeys(formData);
assertThat(formDataWithoutValueKeys).isEqualTo(formData);
}
@Test
void shouldPreserveNonValueKeys() {
Map<String, Object> formData = Map.of(
"empfangendestelle",
Map.of(
"value",
Map.of(
"OrganisationseinheitenAuswahl",
Map.of(
"value",
"123456"
)
)
)
);
Map<String, Object> expected = Map.of(
"empfangendestelle",
Map.of(
"OrganisationseinheitenAuswahl",
"123456"
)
);
var formDataWithoutValueKeys = ValueKeysRemover.removeValueKeys(formData);
assertThat(formDataWithoutValueKeys).isEqualTo(expected);
}
}
}
......@@ -45,7 +45,7 @@ class VorgangTypeCreatorTest {
private final IdentifikationObjektType identifikationObjekt = IdentifikationObjektTypeTestFactory.create();
private final AllgemeineMetadatenType allgemeineMetadaten = AllgemeineMetadatenTypeTestFactory.create();
private final AnwendungsspezifischeErweiterungType anwendungsspezifischeErweiterung = AnwendungsspezifischeErweiterungTypeTestFactory.create();
private final AnwendungsspezifischeErweiterungXMLType anwendungsspezifischeErweiterungXML = AnwendungsspezifischeErweiterungXMLTypeTestFactory.create();
private final AnwendungsspezifischeErweiterungXMLType anwendungsspezifischeErweiterungXML = new AnwendungsspezifischeErweiterungXMLType();
private final KontaktType kontakt = KontaktTypeTestFactory.create();
@BeforeEach
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment