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

OZG-3260 fix FormSolutionsEngineBasedAdapter

parent 5212c108
Branches
Tags
No related merge requests found
......@@ -23,6 +23,8 @@
*/
package de.itvsh.kop.eingangsadapter.semantik.enginebased;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -30,7 +32,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapter {
public static final String IDENTIFIER = "identifier";
public static final String ASSISTANT = "assistant";
public static final String ANLIEGEN_ID = "anliegenId";
public static final String KOMMUNALVERWALTUNG_ID = "kommunalverwaltungId";
......@@ -42,18 +46,19 @@ public class FormSolutionsEngineBasedAdapter implements EngineBasedSemantikAdapt
public FormData parseFormData(FormData formData) {
var processedFormData = formData;
for (FormSolutionsEngineBasedMapper mapper : mappers) {
for (var mapper : mappers) {
processedFormData = mapper.parseFormData(processedFormData);
}
removeProcessedRawData(processedFormData);
return processedFormData;
return removeProcessedData(processedFormData);
}
void removeProcessedRawData(FormData processedFormData) {
processedFormData.getFormData().remove(ASSISTANT);
processedFormData.getFormData().remove(ANLIEGEN_ID);
processedFormData.getFormData().remove(KOMMUNALVERWALTUNG_ID);
FormData removeProcessedData(FormData formData) {
var formDataMap = new HashMap<String, Object>(formData.getFormData());
formDataMap.remove(ASSISTANT);
formDataMap.remove(ANLIEGEN_ID);
formDataMap.remove(KOMMUNALVERWALTUNG_ID);
return formData.toBuilder().formData(Collections.unmodifiableMap(formDataMap)).build();
}
}
......@@ -29,62 +29,88 @@ import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*;
import java.util.Collections;
import java.util.HashMap;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
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 org.springframework.test.util.ReflectionTestUtils;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
class FormSolutionsEngineBasedAdapterTest {
@Spy
@InjectMocks
private FormSolutionsEngineBasedAdapter adapter;
@Mock
private FormSolutionsEngineBasedMapper mapper;
private FormData formData = FormSolutionsEngineBasedAdapterTestFactory.createIncommingDataBuilder().build();
@BeforeEach
void mockMapper() {
when(mapper.parseFormData(any())).thenReturn(formData.toBuilder().formData(new HashMap<String, Object>()).build());
var mappers = Collections.singletonList(mapper);
ReflectionTestUtils.setField(adapter, "mappers", mappers);
}
@DisplayName("Parse formData")
@Nested
class TestParseFormData {
private final FormData formData = FormSolutionsEngineBasedAdapterTestFactory.create();
@BeforeEach
void mockMappers() {
ReflectionTestUtils.setField(adapter, "mappers", Collections.singletonList(mapper));
}
@Test
void shouldCallMappers() {
when(mapper.parseFormData(any())).thenReturn(formData);
adapter.parseFormData(formData);
verify(mapper).parseFormData(formData);
}
}
@Nested
class TestRemove {
@Test
void shouldRemoveRoot() {
var parsed = adapter.parseFormData(formData);
void shouldCallRemoveProcessedRawData() {
when(mapper.parseFormData(any())).thenReturn(formData);
assertThat(parsed.getFormData().get(ASSISTANT)).isNull();
adapter.parseFormData(formData);
verify(adapter).removeProcessedData(formData);
}
@Test
void shouldRemoveKnownUnmapped() {
var parsed = adapter.parseFormData(formData);
void shouldReturnValue() {
doReturn(formData).when(adapter).removeProcessedData(any());
var result = adapter.parseFormData(formData);
assertThat(result).isEqualTo(formData);
}
@DisplayName("remove processed data")
@Nested
class TestRemoveProcessedData {
@Test
void shouldRemoveAssistant() {
var cleanedFormData = adapter.removeProcessedData(formData);
assertThat(cleanedFormData.getFormData()).doesNotContainKey(ASSISTANT);
}
@Test
void shouldRemoveAnliegenId() {
var cleanedFormData = adapter.removeProcessedData(formData);
assertThat(cleanedFormData.getFormData()).doesNotContainKey(ANLIEGEN_ID);
}
assertThat(parsed.getFormData().get(KOMMUNALVERWALTUNG_ID)).isNull();
assertThat(parsed.getFormData().get(ANLIEGEN_ID)).isNull();
@Test
void shouldRemoveKommunalVerwaltungId() {
var cleanedFormData = adapter.removeProcessedData(formData);
assertThat(cleanedFormData.getFormData()).doesNotContainKey(KOMMUNALVERWALTUNG_ID);
}
}
}
}
\ No newline at end of file
......@@ -32,34 +32,38 @@ import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory;
class FormSolutionsEngineBasedAdapterTestFactory {
public static final String ROOT = ASSISTANT;
public static final String ROOT_IDENTIFIER = IDENTIFIER;
public static final String ROOT_IDENTIFIER_VALUE = "root";
public static final String PANELS = FormSolutionsPanelMapper.PANELS;
public static final String PANELS_IDENTIFIER = IDENTIFIER;
public static final String PANELS_IDENTIFIER_VALUE = "panels";
public static final String COMPONENTS = FormSolutionsPanelMapper.COMPONENTS;
public static final String COMPONENTS_IDENTIFIER = IDENTIFIER;
public static final String ANLIEGEN_ID_VALUE = "1234";
public static final String KOMMUNALVERWALTUNG_ID_VALUE = "100000000";
public static final String ASSISTANT_IDENTIFIER_VALUE = "root";
public static final String PANELS_IDENTIFIER_VALUE = "panels";
public static FormData create() {
return createBuilder().build();
}
public static FormData.FormDataBuilder createBuilder() {
return FormDataTestFactory.createBuilder();
return FormDataTestFactory.createBuilder()
.formData(createFormDataMap());
}
private static Map<String, Object> createFormDataMap() {
return Map.of(
ASSISTANT, createAssistantMap(),
ANLIEGEN_ID, ANLIEGEN_ID_VALUE,
KOMMUNALVERWALTUNG_ID, KOMMUNALVERWALTUNG_ID_VALUE);
}
private static Map<String, Object> createAssistantMap() {
return Map.of(
IDENTIFIER, ASSISTANT_IDENTIFIER_VALUE,
FormSolutionsPanelMapper.PANELS, List.of(createPanelMap()));
}
public static FormData.FormDataBuilder createIncommingDataBuilder() {
return FormData.builder()
.formData(Map.of(ROOT,
Map.of(
ROOT_IDENTIFIER, ROOT_IDENTIFIER_VALUE,
PANELS, List.of(Map.of(
PANELS_IDENTIFIER, PANELS_IDENTIFIER_VALUE,
COMPONENTS, FormDataTestFactory.NESTED_LIST_WITH_OBJECTS))),
ANLIEGEN_ID, ANLIEGEN_ID_VALUE,
KOMMUNALVERWALTUNG_ID, KOMMUNALVERWALTUNG_ID_VALUE));
private static Map<String, Object> createPanelMap() {
return Map.of(
IDENTIFIER, PANELS_IDENTIFIER_VALUE,
FormSolutionsPanelMapper.COMPONENTS, FormDataTestFactory.NESTED_LIST_WITH_OBJECTS);
}
}
\ 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