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

OZG-3757 OZG-3763 change responsibility check for FormBasedMapper

parent 9a0de64f
No related branches found
No related tags found
No related merge requests found
...@@ -23,13 +23,11 @@ ...@@ -23,13 +23,11 @@
*/ */
package de.itvsh.kop.eingangsadapter.semantik.formbased; package de.itvsh.kop.eingangsadapter.semantik.formbased;
import java.util.List;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData; import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
interface FormBasedMapper { interface FormBasedMapper {
FormData parseFormData(FormData formData); FormData parseFormData(FormData formData);
List<AnliegenId> getResponsibleAnliegenIds(); boolean isResponsible(FormData formData);
} }
...@@ -23,8 +23,8 @@ ...@@ -23,8 +23,8 @@
*/ */
package de.itvsh.kop.eingangsadapter.semantik.formbased; package de.itvsh.kop.eingangsadapter.semantik.formbased;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -35,34 +35,29 @@ import de.itvsh.kop.eingangsadapter.common.formdata.FormData; ...@@ -35,34 +35,29 @@ import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
public class FormBasedSemantikAdapter { public class FormBasedSemantikAdapter {
@Autowired(required = false) @Autowired(required = false)
private List<FormBasedMapper> mappers; private List<FormBasedMapper> mappers = Collections.emptyList();
public FormData parseFormData(FormData formData) { public FormData parseFormData(FormData formData) {
var formDataAnliegenId = getAnliegenId(formData);
var processedFormData = formData; return new FormDataProcessor().process(formData);
// TODO OZG-1929 Muss gekläert werden, wie damit umgegangen wird
if (Objects.isNull(mappers)) {
return formData;
} }
for (int i = 0; i < mappers.size(); i++) { class FormDataProcessor {
var mapper = mappers.get(i); private FormData processedFormData;
if (isResponsible(mapper, formDataAnliegenId)) {
var processed = mapper.parseFormData(processedFormData); FormData process(FormData originalFormData) {
processedFormData = processed; processedFormData = originalFormData;
} mappers.stream()
} .filter(mapper -> mapper.isResponsible(processedFormData))
.forEach(this::parseWithMapper);
return processedFormData; return processedFormData;
} }
AnliegenId getAnliegenId(FormData formData) { private void parseWithMapper(FormBasedMapper mapper) {
return null;// TODO AnliegenId aus FormData holen processedFormData = mapper.parseFormData(processedFormData);
} }
private boolean isResponsible(FormBasedMapper mapper, AnliegenId anliegenId) {
// TODO isNull rausnehmen, sobald die AnliegenIds definiert sind
return Objects.isNull(anliegenId) || mapper.getResponsibleAnliegenIds().contains(anliegenId);
} }
} }
\ No newline at end of file
...@@ -23,12 +23,12 @@ ...@@ -23,12 +23,12 @@
*/ */
package de.itvsh.kop.eingangsadapter.semantik.formbased; package de.itvsh.kop.eingangsadapter.semantik.formbased;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.ArgumentMatchers.*; import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import java.util.Collections; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
...@@ -38,6 +38,7 @@ import org.mockito.Mock; ...@@ -38,6 +38,7 @@ import org.mockito.Mock;
import org.mockito.Spy; import org.mockito.Spy;
import de.itvsh.kop.eingangsadapter.common.formdata.FormData; import de.itvsh.kop.eingangsadapter.common.formdata.FormData;
import de.itvsh.kop.eingangsadapter.common.formdata.FormDataTestFactory;
class FormBasedSemantikAdapterTest { class FormBasedSemantikAdapterTest {
...@@ -45,40 +46,45 @@ class FormBasedSemantikAdapterTest { ...@@ -45,40 +46,45 @@ class FormBasedSemantikAdapterTest {
@InjectMocks @InjectMocks
private FormBasedSemantikAdapter adapter; private FormBasedSemantikAdapter adapter;
@Spy @Spy
private List<FormBasedMapper> mappers; private List<FormBasedMapper> mappers = new ArrayList<>();
@Mock @Mock
private FormBasedMapper mapper; private FormBasedMapper mapper;
@Nested @Nested
class TestParseFromData { class TestParseFromData {
private FormData formData = FormData.builder().build(); private FormData formData = FormDataTestFactory.create();
private AnliegenId anliegenId = AnliegenId.from(UUID.randomUUID().toString());
@BeforeEach @BeforeEach
void mockEngineBasedMapper() { void mockEngineBasedMapper() {
when(mappers.size()).thenReturn(1); when(mapper.isResponsible(any())).thenReturn(true);
when(mappers.get(anyInt())).thenReturn(mapper); mappers.add(mapper);
doReturn(anliegenId).when(adapter).getAnliegenId(any(FormData.class));
} }
@Test @Test
void shouldCallMappersOnMatchingAnliegenId() { void shouldCallMapperIfResponsible() {
when(mapper.getResponsibleAnliegenIds()).thenReturn(List.of(anliegenId));
adapter.parseFormData(formData); adapter.parseFormData(formData);
verify(mapper).parseFormData(formData); verify(mapper).parseFormData(formData);
} }
@Test @Test
void shouldNotCallMappersOnNonMatchingAnliegenId() { void shouldNotCallMappersIfNOTREsponsible() {
when(mapper.getResponsibleAnliegenIds()).thenReturn(Collections.emptyList()); when(mapper.isResponsible(any())).thenReturn(false);
adapter.parseFormData(formData); adapter.parseFormData(formData);
verifyNoMoreInteractions(mapper); verifyNoMoreInteractions(mapper);
} }
@Test
void shouldReturnMappingResult() {
var expected = FormDataTestFactory.create();
when(mapper.parseFormData(any())).thenReturn(expected);
var result = adapter.parseFormData(formData);
assertThat(result).isSameAs(expected);
}
} }
} }
\ 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