From 60bd601d57efbd00f41b0136f95c4da2e8eb7905 Mon Sep 17 00:00:00 2001 From: Jan Zickermann <jan.zickermann@dataport.de> Date: Wed, 2 Oct 2024 11:57:20 +0200 Subject: [PATCH] OZG-6748 Cleanup DFoerdermittelEngineBasedSemantikAdapterTest --- ...erdermittelEngineBasedSemantikAdapter.java | 17 +++-- ...rmittelEngineBasedSemantikAdapterTest.java | 65 +++++++++++++++++-- .../DFoerdermittelFormDataTestFactory.java | 3 +- 3 files changed, 75 insertions(+), 10 deletions(-) diff --git a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java index 8d9f07cf1..bae3987d8 100644 --- a/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java +++ b/semantik-adapter/src/main/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapter.java @@ -2,9 +2,9 @@ package de.ozgcloud.eingang.semantik.enginebased.dfoerdermittel; import java.io.IOException; import java.io.InputStream; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -109,17 +109,26 @@ public class DFoerdermittelEngineBasedSemantikAdapter implements EngineBasedSema .orElse(formData); } - private ZustaendigeStelle addOrganisationsEinheitId(String orgaId, List<ZustaendigeStelle> zustaendigeStelleList) { + private ZustaendigeStelle addOrganisationsEinheitId(String orgaId, Collection<ZustaendigeStelle> zustaendigeStelles) { ZustaendigeStelle.ZustaendigeStelleBuilder zustaendigeStelleBuilder; - if (Objects.isNull(zustaendigeStelleList) || zustaendigeStelleList.isEmpty()) { + if (Objects.isNull(zustaendigeStelles) || zustaendigeStelles.isEmpty()) { zustaendigeStelleBuilder = ZustaendigeStelle.builder(); } else { - zustaendigeStelleBuilder = zustaendigeStelleList.getFirst().toBuilder(); + var zustaendigeStellesIterator = zustaendigeStelles.iterator(); + var zustaendigeStelle = zustaendigeStellesIterator.next(); + if (zustaendigeStellesIterator.hasNext()) { + logErrorForMoreThanOneZustaendigeStelle(); + } + zustaendigeStelleBuilder = zustaendigeStelle.toBuilder(); } return zustaendigeStelleBuilder.organisationseinheitenId(orgaId).build(); } + void logErrorForMoreThanOneZustaendigeStelle() { + LOG.error("Expect at most one existing ZustaendigeStelle for DFoerdermittel. Continuing by using the first one."); + } + FormData addFormName(FormData formData) { return mapWithModifiedHeader(formData, headerBuilder -> headerBuilder.formName( getNonEmptyFachnachrichtValueByKey(formData, KEY_FORM_NAME) diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java index 875c8c91f..698b665b5 100644 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelEngineBasedSemantikAdapterTest.java @@ -26,6 +26,7 @@ import de.ozgcloud.eingang.common.formdata.IncomingFile; import de.ozgcloud.eingang.common.formdata.PostfachAddressTestFactory; import de.ozgcloud.eingang.common.formdata.ServiceKontoTestFactory; import de.ozgcloud.eingang.common.formdata.StringBasedIdentifier; +import de.ozgcloud.eingang.common.formdata.ZustaendigeStelleTestFactory; import de.ozgcloud.eingang.semantik.common.ServiceKontoFactory; class DFoerdermittelEngineBasedSemantikAdapterTest { @@ -216,12 +217,66 @@ class DFoerdermittelEngineBasedSemantikAdapterTest { @Nested class TestAddOrganisationsEinheitId { - @Test - void shouldHaveOrganisationsEinheitId() { - var formData = adapter.addOrganisationsEinheitId(DFoerdermittelFormDataTestFactory.create()); - var organisationseinheitenId = formData.getZustaendigeStelles().getFirst().getOrganisationseinheitenId(); - assertThat(organisationseinheitenId).isEqualTo(ORGANISATIONS_EINHEIT_ID); + @DisplayName("with no existing zustaendige stelles") + @Nested + class TestWithNoExistingZustaendigeStelles { + @Test + void shouldHaveOrganisationsEinheitId() { + var inputFormData = DFoerdermittelFormDataTestFactory.createBuilder() + .clearZustaendigeStelles() + .build(); + + var formData = adapter.addOrganisationsEinheitId(inputFormData); + + assertThat(formData.getZustaendigeStelles()) + .extracting("organisationseinheitenId") + .containsExactly(ORGANISATIONS_EINHEIT_ID); + } + } + + @DisplayName("with one existing zustaendige stelle") + @Nested + class TestWithOneExistingZustaendigeStelle { + @Test + void shouldHaveOrganisationsEinheitId() { + var formData = adapter.addOrganisationsEinheitId(DFoerdermittelFormDataTestFactory.create()); + + assertThat(formData.getZustaendigeStelles()) + .extracting("organisationseinheitenId") + .containsExactly(ORGANISATIONS_EINHEIT_ID); + } + } + + @DisplayName("with two existing zustaendige stelles") + @Nested + class TestWithTwoExistingZustaendigeStelles { + + private FormData inputFormData; + + @BeforeEach + void setup() { + inputFormData = DFoerdermittelFormDataTestFactory.createBuilder() + .zustaendigeStelle(ZustaendigeStelleTestFactory.create()) + .build(); + } + + @Test + void shouldHaveOrganisationsEinheitId() { + var formData = adapter.addOrganisationsEinheitId(inputFormData); + + assertThat(formData.getZustaendigeStelles()) + .extracting("organisationseinheitenId") + .containsExactly(ORGANISATIONS_EINHEIT_ID); + } + + @DisplayName("should log error for more than one zustaendige stelle") + @Test + void shouldLogErrorForMoreThanOneZustaendigeStelle() { + adapter.addOrganisationsEinheitId(inputFormData); + + verify(adapter).logErrorForMoreThanOneZustaendigeStelle(); + } } } diff --git a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java index 8b8c9bf41..7bd4cc6a5 100644 --- a/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java +++ b/semantik-adapter/src/test/java/de/ozgcloud/eingang/semantik/enginebased/dfoerdermittel/DFoerdermittelFormDataTestFactory.java @@ -8,6 +8,7 @@ import java.util.function.Predicate; import java.util.stream.IntStream; import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormDataTestFactory; import de.ozgcloud.eingang.common.formdata.FormHeaderTestFactory; import lombok.Builder; @@ -35,7 +36,7 @@ class DFoerdermittelFormDataTestFactory { } static FormData.FormDataBuilder createBuilderWithFachnachricht(Fachnachricht fachnachricht) { - return FormData.builder() + return FormDataTestFactory.createBuilder() .header(FormHeaderTestFactory.create()) .formData(Map.of("Fachnachricht", createFachnachrichtMapWithFachnachricht(fachnachricht))); } -- GitLab