Skip to content
Snippets Groups Projects
Commit aabacf9b authored by OZG-Cloud Team's avatar OZG-Cloud Team
Browse files

OZG-5412 semantik-adapter: Consider multiple responsible engines

parent b4844708
Branches
Tags
No related merge requests found
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
package de.ozgcloud.eingang.semantik; package de.ozgcloud.eingang.semantik;
import java.util.List; import java.util.List;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -52,15 +51,16 @@ public class SemantikAdapter { ...@@ -52,15 +51,16 @@ public class SemantikAdapter {
} }
private FormData parseByEngineAdapter(FormData formData) { private FormData parseByEngineAdapter(FormData formData) {
return findResponsibleEngineAdapter(formData) for (var adapter : getResponsibleEngineAdapters(formData)) {
.map(adapter -> adapter.parseFormData(formData)) formData = adapter.parseFormData(formData);
.orElse(formData); }
return formData;
} }
Optional<EngineBasedSemantikAdapter> findResponsibleEngineAdapter(FormData formData) { List<EngineBasedSemantikAdapter> getResponsibleEngineAdapters(FormData formData) {
return engineBasedAdapters.stream() return engineBasedAdapters.stream()
.filter(adapter -> adapter.isResponsible(formData)) .filter(adapter -> adapter.isResponsible(formData))
.findFirst(); .toList();
} }
private FormData parseByFormAdapter(FormData formData) { private FormData parseByFormAdapter(FormData formData) {
......
...@@ -28,7 +28,6 @@ import static org.mockito.ArgumentMatchers.*; ...@@ -28,7 +28,6 @@ import static org.mockito.ArgumentMatchers.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.stream.Stream; import java.util.stream.Stream;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
...@@ -60,36 +59,27 @@ class SemantikAdapterTest { ...@@ -60,36 +59,27 @@ class SemantikAdapterTest {
@Mock @Mock
private VorgangService vorgangService; private VorgangService vorgangService;
@DisplayName("find responsible engine adapter") @DisplayName("get responsible engine adapters")
@Nested @Nested
class TestFindResponsibleEngineAdapter { class TestGetResponsibleEngineAdapters {
@Mock
private EngineBasedSemantikAdapter unresponsibleEngineAdapter;
@Mock
private FormData formData;
@BeforeEach @BeforeEach
void mock() { 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") @DisplayName("should return responsible")
@Test @Test
void shouldReturnResponsible() { void shouldReturnResponsible() {
when(engineAdapter.isResponsible(any())).thenReturn(true); var foundAdapters = adapter.getResponsibleEngineAdapters(formData);
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);
assertThat(foundAdapter).isNotPresent(); assertThat(foundAdapters).isEqualTo(List.of(engineAdapter));
} }
} }
...@@ -105,7 +95,7 @@ class SemantikAdapterTest { ...@@ -105,7 +95,7 @@ class SemantikAdapterTest {
@BeforeEach @BeforeEach
void mockEngineAdapter() { 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(engineAdapter.parseFormData(any())).thenReturn(engineAdapterResponse);
when(formAdapter.parseFormData(any())).thenReturn(formAdapterResponse); when(formAdapter.parseFormData(any())).thenReturn(formAdapterResponse);
} }
...@@ -114,7 +104,7 @@ class SemantikAdapterTest { ...@@ -114,7 +104,7 @@ class SemantikAdapterTest {
void shouldCallFindEngineAdapter() { void shouldCallFindEngineAdapter() {
adapter.processFormData(formData); adapter.processFormData(formData);
verify(adapter).findResponsibleEngineAdapter(formData); verify(adapter).getResponsibleEngineAdapters(formData);
} }
@Test @Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment