diff --git a/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java b/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java index 510b7c92779fa39758cf3da4855a7af4dec20fe1..a4a52ef77b597954be347d80d4cca95b197d8bc6 100644 --- a/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java +++ b/common/src/main/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplier.java @@ -17,10 +17,17 @@ public class VorgangNummerSupplier { static final int SUFFIX_LENGTH = 6; public String get() { + return get(SUFFIX_LENGTH); + } + + public String get(int suffixLength) { + if (suffixLength <1){ + throw new IllegalArgumentException("Suffix length must be at least 1"); + } var today = LocalDate.now(); var lastYearNumber = today.getYear() % 10; return VORGANGNUMMER_TEMPLATE.formatted(lastYearNumber, today.getMonthValue(), today.getDayOfMonth(), - RandomStringUtils.random(SUFFIX_LENGTH, BASE30_ALPHABET)); + RandomStringUtils.random(suffixLength, BASE30_ALPHABET)); } } diff --git a/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java b/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java index 2fc9a524f5e23d2bebd9721eb5612d96ad879782..dbcec9daca804529f145eea48bf4a82328f66e18 100644 --- a/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java +++ b/common/src/test/java/de/ozgcloud/eingang/common/vorgang/VorgangNummerSupplierTest.java @@ -1,18 +1,18 @@ package de.ozgcloud.eingang.common.vorgang; import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.*; import static org.mockito.Mockito.*; import java.time.LocalDate; -import java.util.Random; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import org.mockito.InjectMocks; -import org.mockito.Mock; import org.mockito.Spy; -import org.springframework.test.util.ReflectionTestUtils; class VorgangNummerSupplierTest { @@ -26,7 +26,25 @@ class VorgangNummerSupplierTest { void shouldAddSuffix() { var result = vorgangNummerSupplier.get(); - assertThat(result).hasSize(11); + assertThat(getSuffix(result)).hasSize(VorgangNummerSupplier.SUFFIX_LENGTH); + } + + @Test + void shouldHaveSuffixSize() { + var result = vorgangNummerSupplier.get(3); + + assertThat(getSuffix(result)).hasSize(3); + } + + @DisplayName("should throw exception when") + @ParameterizedTest(name = "suffix length {0}") + @ValueSource(ints = { -1, 0 }) + void shouldThrowException(int suffixLength) { + assertThrows(IllegalArgumentException.class, () -> vorgangNummerSupplier.get(suffixLength)); + } + + private String getSuffix(String string) { + return string.substring(string.indexOf('-') + 1); } @Test diff --git a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java index f862343ae394ab692575d4ab1ffa228d3bcbf799..9e60b84b7ac4ba0dafc491ae1d80742a4d002d58 100644 --- a/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java +++ b/xta-adapter/src/main/java/de/ozgcloud/eingang/xta/XtaService.java @@ -19,6 +19,7 @@ import lombok.extern.log4j.Log4j2; class XtaService { static final String DFOERDERMITTELANTRAG_MESSAGE_TYPE = "Geschaeftsgang.Geschaeftsgang.0201"; + static final int VORGANG_NUMMER_SUFFIX_LENGTH = 4; @Autowired private XtaRemoteService remoteService; @@ -58,7 +59,7 @@ class XtaService { } FormHeader setVorgangNummer(FormHeader formHeader) { - return formHeader.toBuilder().vorgangNummer(vorgangNummerSupplier.get()).build(); + return formHeader.toBuilder().vorgangNummer(vorgangNummerSupplier.get(VORGANG_NUMMER_SUFFIX_LENGTH)).build(); } public void acknowledgeReceive(@NonNull XtaMessageId messageId) { diff --git a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java index 58b6fcaa1179a3022a7fb7cca77e5f4a121c8982..d1fc3de86803ba5fc9c49a574011b41adf8e3be0 100644 --- a/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java +++ b/xta-adapter/src/test/java/de/ozgcloud/eingang/xta/XtaServiceTest.java @@ -188,13 +188,13 @@ class XtaServiceTest { void shouldCallVorgangNummerSupplier() { service.setVorgangNummer(FormHeaderTestFactory.create()); - verify(vorgangNummerSupplier).get(); + verify(vorgangNummerSupplier).get(XtaService.VORGANG_NUMMER_SUFFIX_LENGTH); } @Test void shouldSetVorgangNummer() { var vorgangNummer = "vorgang-1"; - when(vorgangNummerSupplier.get()).thenReturn(vorgangNummer); + when(vorgangNummerSupplier.get(anyInt())).thenReturn(vorgangNummer); var result = service.setVorgangNummer(FormHeaderTestFactory.create());