Skip to content
Snippets Groups Projects
Commit dd47e693 authored by OZG-Cloud Team's avatar OZG-Cloud Team
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 833f072b a0e52a59
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,7 @@ import java.time.LocalDate;
import org.apache.commons.lang3.RandomStringUtils;
import org.springframework.stereotype.Component;
import de.ozgcloud.common.errorhandling.TechnicalException;
import lombok.RequiredArgsConstructor;
@Component
......@@ -17,10 +18,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 TechnicalException("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));
}
}
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;
import de.ozgcloud.common.errorhandling.TechnicalException;
class VorgangNummerSupplierTest {
......@@ -26,7 +28,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(TechnicalException.class, () -> vorgangNummerSupplier.get(suffixLength));
}
private String getSuffix(String string) {
return string.substring(string.indexOf('-') + 1);
}
@Test
......
......@@ -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;
......@@ -17,11 +19,14 @@ 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;
@Autowired
private XtaMessageMapper mapper;
@Autowired
private VorgangNummerSupplier vorgangNummerSupplier;
public Stream<FormData> getMessages() {
return createXtaMessageStream().filter(this::filterByMessageType).map(this::getFormData);
......@@ -45,7 +50,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(VORGANG_NUMMER_SUFFIX_LENGTH)).build();
}
public void acknowledgeReceive(@NonNull XtaMessageId messageId) {
......
......@@ -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(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
class TestAcknowledgeReceive {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment