diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java index 7641a94284e519298304f8702cc5f467cde30090..47a3d8570d4b2b6c3b3b7aaa5a5d2bba58271f57 100644 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/SemantikAdapter.java @@ -24,7 +24,6 @@ package de.ozgcloud.eingang.semantik; import java.util.List; -import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -52,15 +51,16 @@ public class SemantikAdapter { } private FormData parseByEngineAdapter(FormData formData) { - return findResponsibleEngineAdapter(formData) - .map(adapter -> adapter.parseFormData(formData)) - .orElse(formData); + for (var adapter : getResponsibleEngineAdapters(formData)) { + formData = adapter.parseFormData(formData); + } + return formData; } - Optional<EngineBasedSemantikAdapter> findResponsibleEngineAdapter(FormData formData) { + List<EngineBasedSemantikAdapter> getResponsibleEngineAdapters(FormData formData) { return engineBasedAdapters.stream() .filter(adapter -> adapter.isResponsible(formData)) - .findFirst(); + .toList(); } private FormData parseByFormAdapter(FormData formData) { diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java index dbe206cafc115bf08a30839bab78afbc1933fdb3..754667f0298c9d867846cafee6f28d6b82677fd2 100644 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/SemantikAdapterTest.java @@ -28,7 +28,6 @@ import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; import java.util.List; -import java.util.Optional; import java.util.stream.Stream; import org.junit.jupiter.api.BeforeEach; @@ -60,36 +59,27 @@ class SemantikAdapterTest { @Mock private VorgangService vorgangService; - @DisplayName("find responsible engine adapter") + @DisplayName("get responsible engine adapters") @Nested - class TestFindResponsibleEngineAdapter { + class TestGetResponsibleEngineAdapters { + @Mock + private EngineBasedSemantikAdapter unresponsibleEngineAdapter; + @Mock + private FormData formData; @BeforeEach void mock() { - when(engineAdapters.stream()).thenReturn(Stream.of(engineAdapter)); + when(unresponsibleEngineAdapter.isResponsible(formData)).thenReturn(false); + when(engineAdapter.isResponsible(formData)).thenReturn(true); + when(engineAdapters.stream()).thenReturn(Stream.of(engineAdapter, unresponsibleEngineAdapter)); } - @Mock - private FormData formData; - @DisplayName("should return responsible") @Test void shouldReturnResponsible() { - when(engineAdapter.isResponsible(any())).thenReturn(true); - - var foundAdapter = adapter.findResponsibleEngineAdapter(formData); - - assertThat(foundAdapter).isEqualTo(Optional.of(engineAdapter)); - } - - @DisplayName("should return empty if not responsible") - @Test - void shouldReturnEmptyIfNotResponsible() { - when(engineAdapter.isResponsible(any())).thenReturn(false); - - var foundAdapter = adapter.findResponsibleEngineAdapter(formData); + var foundAdapters = adapter.getResponsibleEngineAdapters(formData); - assertThat(foundAdapter).isNotPresent(); + assertThat(foundAdapters).isEqualTo(List.of(engineAdapter)); } } @@ -105,7 +95,7 @@ class SemantikAdapterTest { @BeforeEach void mockEngineAdapter() { - doReturn(Optional.of(engineAdapter)).when(adapter).findResponsibleEngineAdapter(formData); + doReturn(List.of(engineAdapter)).when(adapter).getResponsibleEngineAdapters(formData); when(engineAdapter.parseFormData(any())).thenReturn(engineAdapterResponse); when(formAdapter.parseFormData(any())).thenReturn(formAdapterResponse); } @@ -114,7 +104,7 @@ class SemantikAdapterTest { void shouldCallFindEngineAdapter() { adapter.processFormData(formData); - verify(adapter).findResponsibleEngineAdapter(formData); + verify(adapter).getResponsibleEngineAdapters(formData); } @Test