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 0fe6d495bf3382335bbb41a8fc186feeb30ba300..f862343ae394ab692575d4ab1ffa228d3bcbf799 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 @@ -9,6 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.formdata.FormHeader; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; import lombok.NonNull; import lombok.extern.log4j.Log4j2; @@ -22,6 +24,8 @@ class XtaService { private XtaRemoteService remoteService; @Autowired private XtaMessageMapper mapper; + @Autowired + private VorgangNummerSupplier vorgangNummerSupplier; public Stream<FormData> getMessages() { return createXtaMessageStream().filter(this::filterByMessageType).map(this::getFormData); @@ -45,7 +49,16 @@ class XtaService { public FormData getFormData(@NonNull XtaMessageMetaData metaData) { var msg = remoteService.getMessage(metaData.getMessageId()); - return mapper.toFormData(msg.toBuilder().metaData(metaData).build()); + var formData = mapper.toFormData(msg.toBuilder().metaData(metaData).build()); + return updateHeader(formData); + } + + FormData updateHeader(FormData formData) { + return formData.toBuilder().header(setVorgangNummer(formData.getHeader())).build(); + } + + FormHeader setVorgangNummer(FormHeader formHeader) { + return formHeader.toBuilder().vorgangNummer(vorgangNummerSupplier.get()).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 643602f8918e4082a2c71cc0cf6223a79945a596..58b6fcaa1179a3022a7fb7cca77e5f4a121c8982 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 @@ -6,6 +6,7 @@ import static org.mockito.Mockito.*; import java.util.stream.Stream; +import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -15,6 +16,9 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; +import de.ozgcloud.eingang.common.formdata.FormData; +import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier; + class XtaServiceTest { private static final String MESSAGE_TYPE_OTHER = "MESSAGE_TYPE_OTHER"; @@ -27,6 +31,8 @@ class XtaServiceTest { private XtaRemoteService remoteService; @Mock private XtaMessageMapper mapper; + @Mock + private VorgangNummerSupplier vorgangNummerSupplier; @Nested class TestGetMessagesAsFormData { @@ -49,6 +55,7 @@ class XtaServiceTest { @Test void shouldCallFilterByMessageType() { + when(mapper.toFormData(any())).thenReturn(FormDataTestFactory.create()); when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); service.getMessages().toList(); @@ -58,6 +65,7 @@ class XtaServiceTest { @Test void shouldCallGetFormData() { + when(mapper.toFormData(any())).thenReturn(FormDataTestFactory.create()); when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); doReturn(true).when(service).filterByMessageType(messageMetaData); @@ -101,6 +109,8 @@ class XtaServiceTest { @Captor private ArgumentCaptor<XtaMessage> messageCaptor; + @Mock + private FormData formData; @BeforeEach void init() { @@ -109,6 +119,8 @@ class XtaServiceTest { @Test void shouldCallRemoteService() { + doReturn(formData).when(service).updateHeader(any()); + service.getFormData(XtaMessageMetaDataTestFactory.create()); verify(remoteService).getMessage(XtaMessageTestFactory.MESSAGE_ID); @@ -116,6 +128,8 @@ class XtaServiceTest { @Test void shouldCallMapper() { + doReturn(formData).when(service).updateHeader(any()); + service.getFormData(XtaMessageMetaDataTestFactory.create()); verify(mapper).toFormData(any()); @@ -123,7 +137,9 @@ class XtaServiceTest { @Test void shouldHaveMetaData() { + doReturn(formData).when(service).updateHeader(any()); XtaMessageMetaData metaData = XtaMessageMetaDataTestFactory.create(); + service.getFormData(metaData); verify(mapper).toFormData(messageCaptor.capture()); @@ -134,6 +150,7 @@ class XtaServiceTest { void shouldReturnMappedResult() { var mapped = FormDataTestFactory.create(); when(mapper.toFormData(any())).thenReturn(mapped); + doReturn(mapped).when(service).updateHeader(any()); var result = service.getFormData(XtaMessageMetaDataTestFactory.create()); @@ -141,6 +158,50 @@ class XtaServiceTest { } } + @Nested + class TestUpdateHeader { + + @Test + void shouldCallSetVorgangNummer() { + var formData = FormDataTestFactory.create(); + + service.updateHeader(formData); + + verify(service).setVorgangNummer(formData.getHeader()); + } + + @Test + void shouldSetUpdatedHeader() { + var updatedHeader = FormHeaderTestFactory.create(); + doReturn(updatedHeader).when(service).setVorgangNummer(any()); + + var result = service.updateHeader(FormDataTestFactory.create()); + + Assertions.assertThat(result.getHeader()).isSameAs(updatedHeader); + } + } + + @Nested + class TestSetVorgangNummer { + + @Test + void shouldCallVorgangNummerSupplier() { + service.setVorgangNummer(FormHeaderTestFactory.create()); + + verify(vorgangNummerSupplier).get(); + } + + @Test + void shouldSetVorgangNummer() { + var vorgangNummer = "vorgang-1"; + when(vorgangNummerSupplier.get()).thenReturn(vorgangNummer); + + var result = service.setVorgangNummer(FormHeaderTestFactory.create()); + + assertThat(result.getVorgangNummer()).isEqualTo(vorgangNummer); + } + } + @Nested class TestAcknowledgeReceive {