Skip to content
Snippets Groups Projects
Commit 7a3ade1f authored by OZGCloud's avatar OZGCloud
Browse files

Merge pull request 'OZG-4529 dFördermittel: Vorgangsnummer' (#106) from...

Merge pull request 'OZG-4529 dFördermittel: Vorgangsnummer' (#106) from OZG-4529-dFoerdermittel-Vorgangsnummer into master

Reviewed-on: https://git.ozg-sh.de/ozgcloud-app/eingang-manager/pulls/106
parents 47561878 be828e58
No related branches found
No related tags found
No related merge requests found
...@@ -5,6 +5,7 @@ import java.time.LocalDate; ...@@ -5,6 +5,7 @@ import java.time.LocalDate;
import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import de.ozgcloud.common.errorhandling.TechnicalException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@Component @Component
...@@ -17,10 +18,17 @@ public class VorgangNummerSupplier { ...@@ -17,10 +18,17 @@ public class VorgangNummerSupplier {
static final int SUFFIX_LENGTH = 6; static final int SUFFIX_LENGTH = 6;
public String get() { public String get() {
return get(SUFFIX_LENGTH);
}
public String get(int suffixLength) {
if (suffixLength <1){
throw new TechnicalException("Suffix length must be at least 1");
}
var today = LocalDate.now(); var today = LocalDate.now();
var lastYearNumber = today.getYear() % 10; var lastYearNumber = today.getYear() % 10;
return VORGANGNUMMER_TEMPLATE.formatted(lastYearNumber, today.getMonthValue(), today.getDayOfMonth(), return VORGANGNUMMER_TEMPLATE.formatted(lastYearNumber, today.getMonthValue(), today.getDayOfMonth(),
RandomStringUtils.random(SUFFIX_LENGTH, BASE30_ALPHABET)); RandomStringUtils.random(suffixLength, BASE30_ALPHABET));
} }
} }
package de.ozgcloud.eingang.common.vorgang; package de.ozgcloud.eingang.common.vorgang;
import static org.assertj.core.api.Assertions.*; import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Random;
import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.RandomStringUtils;
import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test; 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.InjectMocks;
import org.mockito.Mock;
import org.mockito.Spy; import org.mockito.Spy;
import org.springframework.test.util.ReflectionTestUtils;
import de.ozgcloud.common.errorhandling.TechnicalException;
class VorgangNummerSupplierTest { class VorgangNummerSupplierTest {
...@@ -26,7 +28,25 @@ class VorgangNummerSupplierTest { ...@@ -26,7 +28,25 @@ class VorgangNummerSupplierTest {
void shouldAddSuffix() { void shouldAddSuffix() {
var result = vorgangNummerSupplier.get(); 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(TechnicalException.class, () -> vorgangNummerSupplier.get(suffixLength));
}
private String getSuffix(String string) {
return string.substring(string.indexOf('-') + 1);
} }
@Test @Test
......
...@@ -9,6 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -9,6 +9,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import de.ozgcloud.eingang.common.formdata.FormData; 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.NonNull;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
...@@ -17,11 +19,14 @@ import lombok.extern.log4j.Log4j2; ...@@ -17,11 +19,14 @@ import lombok.extern.log4j.Log4j2;
class XtaService { class XtaService {
static final String DFOERDERMITTELANTRAG_MESSAGE_TYPE = "Geschaeftsgang.Geschaeftsgang.0201"; static final String DFOERDERMITTELANTRAG_MESSAGE_TYPE = "Geschaeftsgang.Geschaeftsgang.0201";
static final int VORGANG_NUMMER_SUFFIX_LENGTH = 4;
@Autowired @Autowired
private XtaRemoteService remoteService; private XtaRemoteService remoteService;
@Autowired @Autowired
private XtaMessageMapper mapper; private XtaMessageMapper mapper;
@Autowired
private VorgangNummerSupplier vorgangNummerSupplier;
public Stream<FormData> getMessages() { public Stream<FormData> getMessages() {
return createXtaMessageStream().filter(this::filterByMessageType).map(this::getFormData); return createXtaMessageStream().filter(this::filterByMessageType).map(this::getFormData);
...@@ -45,7 +50,16 @@ class XtaService { ...@@ -45,7 +50,16 @@ class XtaService {
public FormData getFormData(@NonNull XtaMessageMetaData metaData) { public FormData getFormData(@NonNull XtaMessageMetaData metaData) {
var msg = remoteService.getMessage(metaData.getMessageId()); 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(VORGANG_NUMMER_SUFFIX_LENGTH)).build();
} }
public void acknowledgeReceive(@NonNull XtaMessageId messageId) { public void acknowledgeReceive(@NonNull XtaMessageId messageId) {
......
...@@ -6,6 +6,7 @@ import static org.mockito.Mockito.*; ...@@ -6,6 +6,7 @@ import static org.mockito.Mockito.*;
import java.util.stream.Stream; import java.util.stream.Stream;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
...@@ -15,6 +16,9 @@ import org.mockito.InjectMocks; ...@@ -15,6 +16,9 @@ import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.Spy; import org.mockito.Spy;
import de.ozgcloud.eingang.common.formdata.FormData;
import de.ozgcloud.eingang.common.vorgang.VorgangNummerSupplier;
class XtaServiceTest { class XtaServiceTest {
private static final String MESSAGE_TYPE_OTHER = "MESSAGE_TYPE_OTHER"; private static final String MESSAGE_TYPE_OTHER = "MESSAGE_TYPE_OTHER";
...@@ -27,6 +31,8 @@ class XtaServiceTest { ...@@ -27,6 +31,8 @@ class XtaServiceTest {
private XtaRemoteService remoteService; private XtaRemoteService remoteService;
@Mock @Mock
private XtaMessageMapper mapper; private XtaMessageMapper mapper;
@Mock
private VorgangNummerSupplier vorgangNummerSupplier;
@Nested @Nested
class TestGetMessagesAsFormData { class TestGetMessagesAsFormData {
...@@ -49,6 +55,7 @@ class XtaServiceTest { ...@@ -49,6 +55,7 @@ class XtaServiceTest {
@Test @Test
void shouldCallFilterByMessageType() { void shouldCallFilterByMessageType() {
when(mapper.toFormData(any())).thenReturn(FormDataTestFactory.create());
when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message);
service.getMessages().toList(); service.getMessages().toList();
...@@ -58,6 +65,7 @@ class XtaServiceTest { ...@@ -58,6 +65,7 @@ class XtaServiceTest {
@Test @Test
void shouldCallGetFormData() { void shouldCallGetFormData() {
when(mapper.toFormData(any())).thenReturn(FormDataTestFactory.create());
when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message); when(remoteService.getMessage(any(XtaMessageId.class))).thenReturn(message);
doReturn(true).when(service).filterByMessageType(messageMetaData); doReturn(true).when(service).filterByMessageType(messageMetaData);
...@@ -101,6 +109,8 @@ class XtaServiceTest { ...@@ -101,6 +109,8 @@ class XtaServiceTest {
@Captor @Captor
private ArgumentCaptor<XtaMessage> messageCaptor; private ArgumentCaptor<XtaMessage> messageCaptor;
@Mock
private FormData formData;
@BeforeEach @BeforeEach
void init() { void init() {
...@@ -109,6 +119,8 @@ class XtaServiceTest { ...@@ -109,6 +119,8 @@ class XtaServiceTest {
@Test @Test
void shouldCallRemoteService() { void shouldCallRemoteService() {
doReturn(formData).when(service).updateHeader(any());
service.getFormData(XtaMessageMetaDataTestFactory.create()); service.getFormData(XtaMessageMetaDataTestFactory.create());
verify(remoteService).getMessage(XtaMessageTestFactory.MESSAGE_ID); verify(remoteService).getMessage(XtaMessageTestFactory.MESSAGE_ID);
...@@ -116,6 +128,8 @@ class XtaServiceTest { ...@@ -116,6 +128,8 @@ class XtaServiceTest {
@Test @Test
void shouldCallMapper() { void shouldCallMapper() {
doReturn(formData).when(service).updateHeader(any());
service.getFormData(XtaMessageMetaDataTestFactory.create()); service.getFormData(XtaMessageMetaDataTestFactory.create());
verify(mapper).toFormData(any()); verify(mapper).toFormData(any());
...@@ -123,7 +137,9 @@ class XtaServiceTest { ...@@ -123,7 +137,9 @@ class XtaServiceTest {
@Test @Test
void shouldHaveMetaData() { void shouldHaveMetaData() {
doReturn(formData).when(service).updateHeader(any());
XtaMessageMetaData metaData = XtaMessageMetaDataTestFactory.create(); XtaMessageMetaData metaData = XtaMessageMetaDataTestFactory.create();
service.getFormData(metaData); service.getFormData(metaData);
verify(mapper).toFormData(messageCaptor.capture()); verify(mapper).toFormData(messageCaptor.capture());
...@@ -134,6 +150,7 @@ class XtaServiceTest { ...@@ -134,6 +150,7 @@ class XtaServiceTest {
void shouldReturnMappedResult() { void shouldReturnMappedResult() {
var mapped = FormDataTestFactory.create(); var mapped = FormDataTestFactory.create();
when(mapper.toFormData(any())).thenReturn(mapped); when(mapper.toFormData(any())).thenReturn(mapped);
doReturn(mapped).when(service).updateHeader(any());
var result = service.getFormData(XtaMessageMetaDataTestFactory.create()); var result = service.getFormData(XtaMessageMetaDataTestFactory.create());
...@@ -141,6 +158,50 @@ class XtaServiceTest { ...@@ -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(XtaService.VORGANG_NUMMER_SUFFIX_LENGTH);
}
@Test
void shouldSetVorgangNummer() {
var vorgangNummer = "vorgang-1";
when(vorgangNummerSupplier.get(anyInt())).thenReturn(vorgangNummer);
var result = service.setVorgangNummer(FormHeaderTestFactory.create());
assertThat(result.getVorgangNummer()).isEqualTo(vorgangNummer);
}
}
@Nested @Nested
class TestAcknowledgeReceive { class TestAcknowledgeReceive {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment