diff --git a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java index fe82cb56ed0e8a7dc720bf799307c083b66cb19e..7eb007923536c5e66cf0f3a5b843b6d60cb0723f 100644 --- a/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java +++ b/semantik-adapter/src/main/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapper.java @@ -25,6 +25,7 @@ package de.itvsh.kop.eingangsadapter.semantik.enginebased; import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsEngineBasedAdapter.*; +import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -38,32 +39,42 @@ public class FormSolutionsHeaderMapper implements FormSolutionsEngineBasedMapper static final String TRANSACTION_ID = "transactionId"; - static final String FS_FORMENGINE_NAME = "FormSolutions"; + static final String FORM_ENGINE_NAME = "FormSolutions"; @Override public FormData parseFormData(FormData formData) { - var header = mapHeader(formData); - var cleanedData = removeTransactionId(formData); + return formData.toBuilder() + .header(buildFormHeader(formData)) + .formData(removeProcessedData(formData)) + .build(); + } - return formData.toBuilder().header(header).formData(cleanedData).build(); + FormHeader buildFormHeader(FormData formData) { + return FormHeader.builder() + .formName(getIdentifier(formData)) + .formId(getIdentifier(formData)) + .requestId(getRequestId(formData)) + .formEngineName(FORM_ENGINE_NAME) + .build(); } - private Map<String, Object> removeTransactionId(FormData processedData) { - Map<String, Object> cleanedData = new HashMap<>(processedData.getFormData()); - cleanedData.remove(TRANSACTION_ID); - return cleanedData; + private String getIdentifier(FormData formData) { + return (String) getAssistant(formData).get(IDENTIFIER); } - @SuppressWarnings("unchecked") - FormHeader mapHeader(FormData formData) { - var assistantMap = (Map<String, Object>) formData.getFormData().get(ASSISTANT); + private String getRequestId(FormData formData) { + return (String) formData.getFormData().get(TRANSACTION_ID); + } - return FormHeader.builder() - .formName((String) assistantMap.get(IDENTIFIER)) - .formId((String) assistantMap.get(IDENTIFIER)) - .requestId((String) formData.getFormData().get(TRANSACTION_ID)) - .formEngineName(FS_FORMENGINE_NAME) - .build(); + @SuppressWarnings("unchecked") + private Map<String, Object> getAssistant(FormData formData) { + return (Map<String, Object>) formData.getFormData().get(ASSISTANT); } + Map<String, Object> removeProcessedData(FormData processedData) { + var formDataMap = new HashMap<String, Object>(processedData.getFormData()); + formDataMap.remove(TRANSACTION_ID); + + return Collections.unmodifiableMap(formDataMap); + } } diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java index 902a3047a4f3ed8c0d19c7179f88cde66aa82b04..fbf2fbaa2172a51716bd8deb0c99e05019ab257c 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java +++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderMapperTest.java @@ -25,41 +25,99 @@ package de.itvsh.kop.eingangsadapter.semantik.enginebased; import static de.itvsh.kop.eingangsadapter.semantik.enginebased.FormSolutionsHeaderTestFactory.*; import static org.assertj.core.api.Assertions.*; +import static org.mockito.Mockito.*; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.mockito.Spy; + +import de.itvsh.kop.eingangsadapter.common.formdata.FormData; +import de.itvsh.kop.eingangsadapter.common.formdata.FormHeader; class FormSolutionsHeaderMapperTest { - private FormSolutionsHeaderMapper mapper = new FormSolutionsHeaderMapper(); + @Spy + private final FormSolutionsHeaderMapper mapper = new FormSolutionsHeaderMapper(); + + @DisplayName("Parse formData") @Nested - class TestHeaderMapping { + class TestParseFormData { + + private final FormData formData = FormSolutionsHeaderTestFactory.create(); + @Test - void shouldParseFormName() { - var formData = mapper.parseFormData(FormSolutionsHeaderTestFactory.create()); + void shouldCallBuildFormHeader() { + parseFormData(); - assertThat(formData.getHeader().getFormName()).isEqualTo(FORM_NAME); + verify(mapper).buildFormHeader(formData); } @Test - void shouldParseFormId() { - var formData = mapper.parseFormData(FormSolutionsHeaderTestFactory.create()); + void shouldCallRemoveProcessedData() { + parseFormData(); - assertThat(formData.getHeader().getFormId()).isEqualTo(FORM_NAME); + verify(mapper).removeProcessedData(formData); } @Test - void shouldParseTransactionId() { - var formData = mapper.parseFormData(FormSolutionsHeaderTestFactory.create()); + void shouldReturnValue() { + var result = parseFormData(); - assertThat(formData.getHeader().getRequestId()).isEqualTo(REQUEST_ID); + assertThat(result).usingRecursiveComparison().ignoringFields("header", "formData").isEqualTo(formData); } - @Test - void shouldSetFormEngineName() { - var formData = mapper.parseFormData(FormSolutionsHeaderTestFactory.create()); + private FormData parseFormData() { + return mapper.parseFormData(formData); + } + + @DisplayName("build form header") + @Nested + class TestBuildFormHeader { + + @Test + void shouldHaveFormName() { + var formHeader = buildFormHeader(); + + assertThat(formHeader.getFormName()).isEqualTo(FORM_NAME); + } + + @Test + void shouldHaveFormId() { + var formHeader = buildFormHeader(); + + assertThat(formHeader.getFormId()).isEqualTo(FORM_NAME); + } + + @Test + void shouldHaveTransactionId() { + var formHeader = buildFormHeader(); + + assertThat(formHeader.getRequestId()).isEqualTo(REQUEST_ID); + } + + @Test + void shouldHaveFormEngineName() { + var formHeader = buildFormHeader(); + + assertThat(formHeader.getFormEngineName()).isEqualTo(FormSolutionsHeaderMapper.FORM_ENGINE_NAME); + } + + private FormHeader buildFormHeader() { + return mapper.buildFormHeader(formData); + } + } + + @DisplayName("remove processed data") + @Nested + class TestRemoveProcessedData { + + @Test + void shouldRemoveTransactionId() { + var cleanedFormData = mapper.removeProcessedData(formData); - assertThat(formData.getHeader().getFormEngineName()).isEqualTo(FormSolutionsHeaderMapper.FS_FORMENGINE_NAME); + assertThat(cleanedFormData).doesNotContainKey(FormSolutionsHeaderMapper.TRANSACTION_ID); + } } } -} +} \ No newline at end of file diff --git a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java index 96d256a4110b813f91bbd01fde41679517b494d7..b22177580dd5c398011e235847ec8059fb1d3ed5 100644 --- a/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java +++ b/semantik-adapter/src/test/java/de/itvsh/kop/eingangsadapter/semantik/enginebased/FormSolutionsHeaderTestFactory.java @@ -31,17 +31,18 @@ import java.util.Map; import de.itvsh.kop.eingangsadapter.common.formdata.FormData; public class FormSolutionsHeaderTestFactory { + public static final String FORM_NAME = "form name"; public static final Object REQUEST_ID = "transaction id"; - public static final Map<String, Object> ASSISTANT_1 = Map.of(IDENTIFIER, FORM_NAME); public static FormData create() { return createBuilder().build(); } public static FormData.FormDataBuilder createBuilder() { - return FormData.builder().formData(Map.of( - ASSISTANT, ASSISTANT_1, - TRANSACTION_ID, REQUEST_ID)); + return FormData.builder() + .formData(Map.of( + ASSISTANT, Map.of(IDENTIFIER, FORM_NAME), + TRANSACTION_ID, REQUEST_ID)); } }