diff --git a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/historie/ExportHistorieService.java b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/historie/ExportHistorieService.java index c2b699793e93bcdeac8a56f4e88430bd31890bca..05d4f260244a2ea8569e203c9f1f2bbed19319bc 100644 --- a/alfa-xdomea/src/main/java/de/ozgcloud/alfa/historie/ExportHistorieService.java +++ b/alfa-xdomea/src/main/java/de/ozgcloud/alfa/historie/ExportHistorieService.java @@ -3,6 +3,7 @@ package de.ozgcloud.alfa.historie; import java.util.function.Function; import java.util.stream.Stream; +import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import de.ozgcloud.alfa.common.DateConverter; @@ -37,21 +38,24 @@ public class ExportHistorieService { } String createAkteur(VorgangChange vorgangChange) { - return vorgangChange.getAuthorFullName() + "; " + vorgangChange.getOrganisationseinheitenID(); + return appendOrganisationseinheitenID(vorgangChange.getAuthorFullName(), vorgangChange.getOrganisationseinheitenID()); } String createValueBeforeChange(VorgangChange vorgangChange) { if (vorgangChange.getOrder() == CommandOrder.ASSIGN_USER) { - return vorgangChange.getValueBeforeChange() + "; " + vorgangChange.getOrganisationseinheitenID(); + return appendOrganisationseinheitenID(vorgangChange.getValueBeforeChange(), vorgangChange.getOrganisationseinheitenID()); } return vorgangChange.getValueBeforeChange(); } String createValueAfterChange(VorgangChange vorgangChange) { if (vorgangChange.getOrder() == CommandOrder.ASSIGN_USER) { - return vorgangChange.getValueAfterChange() + "; " + vorgangChange.getOrganisationseinheitenID(); + return appendOrganisationseinheitenID(vorgangChange.getValueAfterChange(), vorgangChange.getOrganisationseinheitenID()); } return vorgangChange.getValueAfterChange(); } + String appendOrganisationseinheitenID(String text, String organisationseinheitenID) { + return StringUtils.isNotBlank(text) ? text + "; " + organisationseinheitenID : StringUtils.EMPTY; + } } diff --git a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/historie/ExportHistorieServiceTest.java b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/historie/ExportHistorieServiceTest.java index ca25dd2f4d70211b4102c874de51016340564073..3482a58b25c0efd0a7f43d438d137555cbae9a76 100644 --- a/alfa-xdomea/src/test/java/de/ozgcloud/alfa/historie/ExportHistorieServiceTest.java +++ b/alfa-xdomea/src/test/java/de/ozgcloud/alfa/historie/ExportHistorieServiceTest.java @@ -9,10 +9,13 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.EnumSource.Mode; +import org.junit.jupiter.params.provider.NullAndEmptySource; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Spy; +import com.thedeanda.lorem.LoremIpsum; + import de.ozgcloud.alfa.common.DateConverter; import de.ozgcloud.alfa.common.command.CommandOrder; import de.ozgcloud.alfa.export.HistorienProtokollInformationTypeTestFactory; @@ -175,18 +178,32 @@ class ExportHistorieServiceTest { @Nested class TestCreateAkteur { + private static final String VALUE_FOR_AKTEUR = LoremIpsum.getInstance().getWords(2); + + @Test + void shouldGetValueForAkteur() { + service.createAkteur(VorgangChangeTestFactory.create()); + + verify(service).appendOrganisationseinheitenID(VorgangChangeTestFactory.CREATED_BY_NAME, + VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID); + } + @Test - void shouldReturnAkteur() { + void shouldReturnValueForAkteur() { + doReturn(VALUE_FOR_AKTEUR).when(service) + .appendOrganisationseinheitenID(VorgangChangeTestFactory.CREATED_BY_NAME, VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID); + var akteur = service.createAkteur(VorgangChangeTestFactory.create()); - assertThat(akteur).isEqualTo( - String.format("%s; %s", VorgangChangeTestFactory.CREATED_BY_NAME, VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID)); + assertThat(akteur).isEqualTo(VALUE_FOR_AKTEUR); } } @Nested class TestCreateValueBeforeChange { + private static final String ASSIGNED_USER = LoremIpsum.getInstance().getWords(2); + @ParameterizedTest @EnumSource(mode = Mode.EXCLUDE, names = "ASSIGN_USER") void shouldReturnValueForOrder(CommandOrder order) { @@ -195,18 +212,30 @@ class ExportHistorieServiceTest { assertThat(value).isEqualTo(VorgangChangeTestFactory.VALUE_BEFORE_CHANGE); } + @Test + void shouldGetValueForAssignUserOrder() { + service.createValueBeforeChange(VorgangChangeTestFactory.createBuilder().order(CommandOrder.ASSIGN_USER).build()); + + verify(service).appendOrganisationseinheitenID(VorgangChangeTestFactory.VALUE_BEFORE_CHANGE, + VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID); + } + @Test void shouldReturnValueForAssignUserOrder() { + doReturn(ASSIGNED_USER).when(service) + .appendOrganisationseinheitenID(VorgangChangeTestFactory.VALUE_BEFORE_CHANGE, VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID); + var value = service.createValueBeforeChange(VorgangChangeTestFactory.createBuilder().order(CommandOrder.ASSIGN_USER).build()); - assertThat(value).isEqualTo( - String.format("%s; %s", VorgangChangeTestFactory.VALUE_BEFORE_CHANGE, VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID)); + assertThat(value).isEqualTo(ASSIGNED_USER); } } @Nested class TestCreateValueAfterChange { + private static final String ASSIGNED_USER = LoremIpsum.getInstance().getWords(2); + @ParameterizedTest @EnumSource(mode = Mode.EXCLUDE, names = "ASSIGN_USER") void shouldReturnValueForOrder(CommandOrder order) { @@ -215,12 +244,44 @@ class ExportHistorieServiceTest { assertThat(value).isEqualTo(VorgangChangeTestFactory.VALUE_AFTER_CHANGE); } + @Test + void shouldGetValueForAssignUserOrder() { + service.createValueAfterChange(VorgangChangeTestFactory.createBuilder().order(CommandOrder.ASSIGN_USER).build()); + + verify(service).appendOrganisationseinheitenID(VorgangChangeTestFactory.VALUE_AFTER_CHANGE, + VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID); + } + @Test void shouldReturnValueForAssignUserOrder() { + doReturn(ASSIGNED_USER).when(service) + .appendOrganisationseinheitenID(VorgangChangeTestFactory.VALUE_AFTER_CHANGE, VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID); + var value = service.createValueAfterChange(VorgangChangeTestFactory.createBuilder().order(CommandOrder.ASSIGN_USER).build()); + assertThat(value).isEqualTo(ASSIGNED_USER); + } + } + + @Nested + class TestAppendOrganisationseinheitenID { + + private static final String TEXT = LoremIpsum.getInstance().getWords(2); + + @ParameterizedTest + @NullAndEmptySource + void shouldReturnEmpty(String assignedUser) { + var value = service.appendOrganisationseinheitenID(assignedUser, VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID); + + assertThat(value).isEmpty(); + } + + @Test + void shouldAppendOrganisationseinheitenID() { + var value = service.appendOrganisationseinheitenID(TEXT, VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID); + assertThat(value).isEqualTo( - String.format("%s; %s", VorgangChangeTestFactory.VALUE_AFTER_CHANGE, VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID)); + String.format("%s; %s", TEXT, VorgangChangeTestFactory.ORGANISATIONSEINHEITEN_ID)); } }