diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryServiceITCase.java b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryServiceITCase.java index ca9c633f680ca50ad139f3a345da636e7ebe5492..b2de1ac3d9ebda72acd97e3a1615206cee8466fb 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryServiceITCase.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/historie/VorgangChangeHistoryServiceITCase.java @@ -8,6 +8,7 @@ import java.time.ZonedDateTime; import java.util.List; import java.util.Map; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.InjectMocks; import org.mockito.Mock; @@ -64,84 +65,138 @@ public class VorgangChangeHistoryServiceITCase { } @Test - void shouldSetBeforeAndAfterValuesInStatusChangeHistory_untilAbgeschlossen() { - givenHistorieServiceReturnsCommands(createStatusChangeCommandsUntilAbgeschlossen()); + void shouldReturnNonEmptyHistories() { + givenHistorieServiceReturnsCommands(createMixedCommands()); + givenUserServiceReturnsUser1Profile(); - var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory(); + var history = service.createVorgangChangeHistory(vorgangWithEingang); - assertThat(history).hasSize(6); - checkBeforeAndAfterValues(history.get(0), VorgangStatus.NEU.name(), VorgangStatus.ANGENOMMEN.name()); - checkBeforeAndAfterValues(history.get(1), VorgangStatus.ANGENOMMEN.name(), VorgangStatus.IN_BEARBEITUNG.name()); - checkBeforeAndAfterValues(history.get(2), VorgangStatus.IN_BEARBEITUNG.name(), VorgangStatus.BESCHIEDEN.name()); - checkBeforeAndAfterValues(history.get(3), VorgangStatus.BESCHIEDEN.name(), VorgangStatus.ABGESCHLOSSEN.name()); - checkBeforeAndAfterValues(history.get(4), VorgangStatus.ABGESCHLOSSEN.name(), VorgangStatus.ZU_LOESCHEN.name()); - checkBeforeAndAfterValues(history.get(5), VorgangStatus.ZU_LOESCHEN.name(), VorgangStatus.ABGESCHLOSSEN.name()); + assertThat(history.getStatusChangeHistory()).hasSize(1); + assertThat(history.getAktenzeichenChangeHistory()).hasSize(1); + assertThat(history.getAssignedUserChangeHistory()).hasSize(1); } @Test - void shouldSetBeforeAndAfterValuesInStatusChangeHistory_untilVerworfen() { - givenHistorieServiceReturnsCommands(createStatusChangeCommandsUntilVerworfen()); + void shouldSetCreatedByName() { + givenHistorieServiceReturnsCommands(List.of(new CommandFactory().sc(CommandOrder.VORGANG_ANNEHMEN))); var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory(); - assertThat(history).hasSize(3); - checkBeforeAndAfterValues(history.get(0), VorgangStatus.NEU.name(), VorgangStatus.VERWORFEN.name()); - checkBeforeAndAfterValues(history.get(1), VorgangStatus.VERWORFEN.name(), VorgangStatus.ZU_LOESCHEN.name()); - checkBeforeAndAfterValues(history.get(2), VorgangStatus.ZU_LOESCHEN.name(), VorgangStatus.VERWORFEN.name()); + assertThat(history.get(0).getCreatedByName()).isEqualTo(userFullNameAndOrgaIDText(USER_1_FULL_NAME)); } @Test - void shouldSetBeforeAndAfterValuesInStatusChangeHistory_untilZurueckholen() { - givenHistorieServiceReturnsCommands(createStatusChangeCommandsUntilZurueckholen()); + void shouldSetFinishedAt() { + var command = new CommandFactory().sc(CommandOrder.VORGANG_ANNEHMEN); + givenHistorieServiceReturnsCommands(List.of(command)); var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory(); - assertThat(history).hasSize(2); - checkBeforeAndAfterValues(history.get(0), VorgangStatus.NEU.name(), VorgangStatus.VERWORFEN.name()); - checkBeforeAndAfterValues(history.get(1), VorgangStatus.VERWORFEN.name(), VorgangStatus.NEU.name()); + assertThat(history.get(0).getFinishedAt()).isNotNull().isEqualTo(command.getFinishedAt()); } - @Test - void shouldSetBeforeAndAfterValuesInAktenzeichenChangeHistory() { - givenHistorieServiceReturnsCommands(createAktenzeichenChangeCommands()); + @Nested + class TestStatusChangeHistory { + @Test + void shouldSetBeforeAndAfterValues_untilAbgeschlossen() { + givenHistorieServiceReturnsCommands(createStatusChangeCommandsUntilAbgeschlossen()); + + var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory(); + + assertThat(history).hasSize(6); + checkBeforeAndAfterValues(history.get(0), VorgangStatus.NEU.name(), VorgangStatus.ANGENOMMEN.name()); + checkBeforeAndAfterValues(history.get(1), VorgangStatus.ANGENOMMEN.name(), VorgangStatus.IN_BEARBEITUNG.name()); + checkBeforeAndAfterValues(history.get(2), VorgangStatus.IN_BEARBEITUNG.name(), VorgangStatus.BESCHIEDEN.name()); + checkBeforeAndAfterValues(history.get(3), VorgangStatus.BESCHIEDEN.name(), VorgangStatus.ABGESCHLOSSEN.name()); + checkBeforeAndAfterValues(history.get(4), VorgangStatus.ABGESCHLOSSEN.name(), VorgangStatus.ZU_LOESCHEN.name()); + checkBeforeAndAfterValues(history.get(5), VorgangStatus.ZU_LOESCHEN.name(), VorgangStatus.ABGESCHLOSSEN.name()); + } - var history = service.createVorgangChangeHistory(vorgangWithEingang).getAktenzeichenChangeHistory(); + @Test + void shouldSetBeforeAndAfterValues_untilVerworfen() { + givenHistorieServiceReturnsCommands(createStatusChangeCommandsUntilVerworfen()); - assertThat(history).hasSize(3); - checkBeforeAndAfterValues(history.get(0), "", AKTENZEICHEN_1); - checkBeforeAndAfterValues(history.get(1), AKTENZEICHEN_1, AKTENZEICHEN_2); - checkBeforeAndAfterValues(history.get(2), AKTENZEICHEN_2, ""); - } + var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory(); - @Test - void shouldSetBeforeAndAfterValuesInAssignedUserChangeHistory() { - givenHistorieServiceReturnsCommands(createUserChangeCommands()); - givenUserServiceReturnsUserProfiles(); + assertThat(history).hasSize(3); + checkBeforeAndAfterValues(history.get(0), VorgangStatus.NEU.name(), VorgangStatus.VERWORFEN.name()); + checkBeforeAndAfterValues(history.get(1), VorgangStatus.VERWORFEN.name(), VorgangStatus.ZU_LOESCHEN.name()); + checkBeforeAndAfterValues(history.get(2), VorgangStatus.ZU_LOESCHEN.name(), VorgangStatus.VERWORFEN.name()); + } + + @Test + void shouldSetBeforeAndAfterValues_untilZurueckholen() { + givenHistorieServiceReturnsCommands(createStatusChangeCommandsUntilZurueckholen()); - var history = service.createVorgangChangeHistory(vorgangWithEingang).getAssignedUserChangeHistory(); + var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory(); - assertThat(history).hasSize(2); - checkBeforeAndAfterValues(history.get(0), "", userFullNameAndOrgaIDText(USER_1_FULL_NAME)); - checkBeforeAndAfterValues(history.get(1), userFullNameAndOrgaIDText(USER_1_FULL_NAME), userFullNameAndOrgaIDText(USER_2_FULL_NAME)); + assertThat(history).hasSize(2); + checkBeforeAndAfterValues(history.get(0), VorgangStatus.NEU.name(), VorgangStatus.VERWORFEN.name()); + checkBeforeAndAfterValues(history.get(1), VorgangStatus.VERWORFEN.name(), VorgangStatus.NEU.name()); + } + + @Test + void shouldSetOrder() { + var command = new CommandFactory().sc(CommandOrder.VORGANG_ANNEHMEN); + givenHistorieServiceReturnsCommands(List.of(command)); + + var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory(); + + assertThat(history.get(0).getOrder()).isNotNull().isEqualTo(CommandOrder.VORGANG_ANNEHMEN); + } } - @Test - void shouldSetCreatedByNameInVorgangChange() { - givenHistorieServiceReturnsCommands(List.of(new CommandFactory().sc(CommandOrder.VORGANG_ANNEHMEN))); + @Nested + class TestAktenzeichenChangeHistory { - var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory(); + @Test + void shouldSetBeforeAndAfterValues() { + givenHistorieServiceReturnsCommands(createAktenzeichenChangeCommands()); - assertThat(history.get(0).getCreatedByName()).isEqualTo(userFullNameAndOrgaIDText(USER_1_FULL_NAME)); + var history = service.createVorgangChangeHistory(vorgangWithEingang).getAktenzeichenChangeHistory(); + + assertThat(history).hasSize(3); + checkBeforeAndAfterValues(history.get(0), "", AKTENZEICHEN_1); + checkBeforeAndAfterValues(history.get(1), AKTENZEICHEN_1, AKTENZEICHEN_2); + checkBeforeAndAfterValues(history.get(2), AKTENZEICHEN_2, ""); + } + + @Test + void shouldSetOrder() { + var command = new CommandFactory().ac(AKTENZEICHEN_1); + givenHistorieServiceReturnsCommands(List.of(command)); + + var history = service.createVorgangChangeHistory(vorgangWithEingang).getAktenzeichenChangeHistory(); + + assertThat(history.get(0).getOrder()).isNotNull().isEqualTo(CommandOrder.SET_AKTENZEICHEN); + } } - @Test - void shouldSetFinishedAtInVorgangChange() { - var command = new CommandFactory().sc(CommandOrder.VORGANG_ANNEHMEN); - givenHistorieServiceReturnsCommands(List.of(command)); + @Nested + class TestAssignedUserChangeHistory { - var history = service.createVorgangChangeHistory(vorgangWithEingang).getStatusChangeHistory(); + @Test + void shouldSetBeforeAndAfterValues() { + givenHistorieServiceReturnsCommands(createUserChangeCommands()); + givenUserServiceReturnsUserProfiles(); - assertThat(history.get(0).getFinishedAt()).isNotNull().isEqualTo(command.getFinishedAt()); + var history = service.createVorgangChangeHistory(vorgangWithEingang).getAssignedUserChangeHistory(); + + assertThat(history).hasSize(2); + checkBeforeAndAfterValues(history.get(0), "", userFullNameAndOrgaIDText(USER_1_FULL_NAME)); + checkBeforeAndAfterValues(history.get(1), userFullNameAndOrgaIDText(USER_1_FULL_NAME), userFullNameAndOrgaIDText(USER_2_FULL_NAME)); + } + + @Test + void shouldSetOrder() { + var command = new CommandFactory().uc(USER_1_ID.toString()); + givenHistorieServiceReturnsCommands(List.of(command)); + givenUserServiceReturnsUser1Profile(); + + var history = service.createVorgangChangeHistory(vorgangWithEingang).getAssignedUserChangeHistory(); + + assertThat(history.get(0).getOrder()).isNotNull().isEqualTo(CommandOrder.ASSIGN_USER); + } } private void checkBeforeAndAfterValues(VorgangChange vorgangChange, String expectedBefore, String expectedAfter) { @@ -154,7 +209,15 @@ public class VorgangChangeHistoryServiceITCase { } private void givenUserServiceReturnsUserProfiles() { + givenUserServiceReturnsUser1Profile(); + givenUserServiceReturnsUser2Profile(); + } + + private void givenUserServiceReturnsUser1Profile() { when(userService.getById(USER_1_ID)).thenReturn(userProfile(USER_1_FIRST_NAME, USER_1_LAST_NAME)); + } + + private void givenUserServiceReturnsUser2Profile() { when(userService.getById(USER_2_ID)).thenReturn(userProfile(USER_2_FIRST_NAME, USER_2_LAST_NAME)); } @@ -214,6 +277,15 @@ public class VorgangChangeHistoryServiceITCase { ); } + private List<Command> createMixedCommands() { + var f = new CommandFactory(); + return List.of( + f.sc(CommandOrder.VORGANG_ANNEHMEN), + f.ac(AKTENZEICHEN_1), + f.uc(USER_1_ID.toString()) + ); + } + private static class CommandFactory { private ZonedDateTime dateTime = ZonedDateTime.now(ZoneId.of("UTC"));