From aabacf9bb3ed503445841ec38e3cc28a7a753bad Mon Sep 17 00:00:00 2001 From: OZG-Cloud Team <noreply@ozg-sh.de> Date: Tue, 28 May 2024 12:22:05 +0200 Subject: [PATCH] OZG-5412 semantik-adapter: Consider multiple responsible engines --- .../eingang/semantik/SemantikAdapter.java | 12 +++---- .../eingang/semantik/SemantikAdapterTest.java | 36 +++++++------------ 2 files changed, 19 insertions(+), 29 deletions(-) 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 7641a942..47a3d857 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 dbe206ca..754667f0 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 -- GitLab