diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java index ad178941ac769804059b33333b68034304000593..1a5d2ac5fda7dc714f9f2b13514dc22705159219 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/common/command/Command.java @@ -26,6 +26,8 @@ package de.ozgcloud.alfa.common.command; import java.time.ZonedDateTime; import java.util.Map; +import org.apache.commons.lang3.StringUtils; + import com.fasterxml.jackson.annotation.JsonIgnore; import de.ozgcloud.alfa.common.LinkedUserProfileResource; @@ -76,8 +78,8 @@ public class Command { } @JsonIgnore - public boolean isDoneSuccessfully() { - return status == CommandStatus.FINISHED; + public boolean isFinishedSuccessfully() { + return status == CommandStatus.FINISHED && StringUtils.isEmpty(errorMessage); } @JsonIgnore diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandController.java b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandController.java index 08e6eab21dee043818128204e583e9fc9f571e6d..2cc413979da3622e47fc9d0d5677b804f001cf23 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandController.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandController.java @@ -53,7 +53,7 @@ public class WiedervorlageCommandController { @PathVariable long wiedervorlageVersion) { var wiedervorlage = service.getById(wiedervorlageId); var createdCommand = createCommand(wiedervorlage, command); - var doneCommand = service.updateNextFristOnSuccessfullyDoneCommand(createdCommand, wiedervorlage.getVorgangId()); + var doneCommand = service.updateNextFrist(createdCommand, wiedervorlage.getVorgangId()); return ResponseEntity.created(linkTo(CommandController.class).slash(doneCommand.getId()).toUri()).build(); } @@ -96,7 +96,7 @@ public class WiedervorlageCommandController { @PostMapping public ResponseEntity<Void> createWiedervorlage(@RequestBody CreateCommand command, @PathVariable String vorgangId) { var createdCommand = service.createWiedervorlage((Wiedervorlage) command.getBody(), vorgangId); - var doneCommand = service.updateNextFristOnSuccessfullyDoneCommand(createdCommand, createdCommand.getVorgangId()); + var doneCommand = service.updateNextFrist(createdCommand, createdCommand.getVorgangId()); return ResponseEntity.created(linkTo(CommandController.class).slash(doneCommand.getId()).toUri()).build(); } diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageService.java b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageService.java index 9fd646607e81f2ee28830c4aa86975795858b731..28f4795c3695c12aa76981ebcb01c2f807fbbbde 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageService.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageService.java @@ -73,20 +73,20 @@ class WiedervorlageService { return remoteService.getById(wiedervorlageId); } - public void updateNextFrist(String vorgangId) { - var allWiedervorlagen = findByVorgangId(vorgangId); - - remoteService.updateNextFrist(vorgangId, calculateNextFrist(allWiedervorlagen)); - } - - Command updateNextFristOnSuccessfullyDoneCommand(Command command, String vorgangId) { + public Command updateNextFrist(Command command, String vorgangId) { var doneCommand = commandService.waitUntilDone(command); - if (doneCommand.isDoneSuccessfully()) { - updateNextFrist(vorgangId); + if (doneCommand.isFinishedSuccessfully()) { + doUpdateNextFrist(vorgangId); } return doneCommand; } + void doUpdateNextFrist(String vorgangId) { + var allWiedervorlagen = findByVorgangId(vorgangId); + + remoteService.updateNextFrist(vorgangId, calculateNextFrist(allWiedervorlagen)); + } + Optional<LocalDate> calculateNextFrist(Stream<Wiedervorlage> wiedervorlagen) { return wiedervorlagen .filter(Objects::nonNull) diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandTest.java index 170c3a34fa09b296be2c4edba98331316955a617..f36fbc385c6a22097ff93957c7702de5326cc9d1 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/common/command/CommandTest.java @@ -11,27 +11,39 @@ import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.EnumSource.Mode; import org.mockito.Mock; +import com.thedeanda.lorem.LoremIpsum; + class CommandTest { @Nested - class TestIsDoneSuccessfully { + class TestIsFinishedSuccessfully { @ParameterizedTest @EnumSource(names = "FINISHED") - public void shouldReturnTrue(CommandStatus commandStatus) { + void shouldReturnTrue(CommandStatus commandStatus) { var command = CommandTestFactory.createBuilder().status(commandStatus).build(); - var isDoneSuccessfully = command.isDoneSuccessfully(); + var isDoneSuccessfully = command.isFinishedSuccessfully(); assertThat(isDoneSuccessfully).isTrue(); } @ParameterizedTest @EnumSource(names = "FINISHED", mode = Mode.EXCLUDE) - public void shouldReturnFalse(CommandStatus commandStatus) { + void shouldReturnFalseOnStatusNotFinished(CommandStatus commandStatus) { var command = CommandTestFactory.createBuilder().status(commandStatus).build(); - var isDoneSuccessfully = command.isDoneSuccessfully(); + var isDoneSuccessfully = command.isFinishedSuccessfully(); + + assertThat(isDoneSuccessfully).isFalse(); + } + + @ParameterizedTest + @EnumSource + void shouldReturnFalseOnErrorMessage(CommandStatus commandStatus) { + var command = CommandTestFactory.createBuilder().status(commandStatus).errorMessage(LoremIpsum.getInstance().getWords(1)).build(); + + var isDoneSuccessfully = command.isFinishedSuccessfully(); assertThat(isDoneSuccessfully).isFalse(); } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandByVorgangControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandByVorgangControllerTest.java index 7c91a7687f2e74eb23eb111b36f141e780fd7a09..ef4a43f95f4ed8458d9be2f37bb190e32bd87e84 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandByVorgangControllerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandByVorgangControllerTest.java @@ -90,7 +90,7 @@ class WiedervorlageCommandByVorgangControllerTest { createCommand = CommandTestFactory.create(); doneCommand = createCommand.toBuilder().status(CommandStatus.FINISHED).build(); when(service.createWiedervorlage(any(), any())).thenReturn(createCommand); - when(service.updateNextFristOnSuccessfullyDoneCommand(createCommand, VorgangHeaderTestFactory.ID)).thenReturn(doneCommand); + when(service.updateNextFrist(createCommand, VorgangHeaderTestFactory.ID)).thenReturn(doneCommand); } @Nested @@ -108,7 +108,7 @@ class WiedervorlageCommandByVorgangControllerTest { void shouldUpdateNextFristOnSuccessfullyDoneCommand() { doRequest(); - verify(service).updateNextFristOnSuccessfullyDoneCommand(createCommand, VorgangHeaderTestFactory.ID); + verify(service).updateNextFrist(createCommand, VorgangHeaderTestFactory.ID); } @SneakyThrows diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandControllerTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandControllerTest.java index 7ecbfc74dbf6819a27e150b6808b8620624e5b36..198f7a00535cfc7dbcc73c53fa65f3d826a2225d 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandControllerTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageCommandControllerTest.java @@ -89,7 +89,7 @@ class WiedervorlageCommandControllerTest { .body(WiedervorlageTestFactory.createAsMap()).build(); doneCommand = createCommand.toBuilder().status(CommandStatus.FINISHED).build(); when(service.editWiedervorlage(any(), any(), anyLong())).thenReturn(createCommand); - when(service.updateNextFristOnSuccessfullyDoneCommand(createCommand, VorgangHeaderTestFactory.ID)).thenReturn(doneCommand); + when(service.updateNextFrist(createCommand, VorgangHeaderTestFactory.ID)).thenReturn(doneCommand); } @SneakyThrows @@ -104,7 +104,7 @@ class WiedervorlageCommandControllerTest { void shouldUpdateNextFristOnSuccessfullyDoneCommand() { doRequest(); - verify(service).updateNextFristOnSuccessfullyDoneCommand(createCommand, VorgangHeaderTestFactory.ID); + verify(service).updateNextFrist(createCommand, VorgangHeaderTestFactory.ID); } @SneakyThrows diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageServiceTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageServiceTest.java index b3d3ffd3fda88b03bb88d7ae5e1097b4e3cd801c..0479bb9094ae757c30043f67097d58ef61744f36 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageServiceTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/wiedervorlage/WiedervorlageServiceTest.java @@ -173,7 +173,7 @@ class WiedervorlageServiceTest { } @Nested - class TestUpdateNextFrist { + class TestDoUpdateNextFrist { @Nested class ServiceMethod { @@ -207,7 +207,7 @@ class WiedervorlageServiceTest { } private void callUpdateNextFrist() { - service.updateNextFrist(VorgangHeaderTestFactory.ID); + service.doUpdateNextFrist(VorgangHeaderTestFactory.ID); } } @@ -257,15 +257,15 @@ class WiedervorlageServiceTest { } @Nested - class TestUpdateNextFristOnSuccessfullyDoneCommand { + class TestUpdateNextFrist { @Test - public void shouldWaitUntilCommandDone() { + void shouldWaitUntilCommandDone() { var pendingCommand = CommandTestFactory.createBuilder().status(CommandStatus.PENDING).build(); var command = CommandTestFactory.create(); when(commandService.waitUntilDone(command)).thenReturn(pendingCommand); - service.updateNextFristOnSuccessfullyDoneCommand(command, VorgangHeaderTestFactory.ID); + service.updateNextFrist(command, VorgangHeaderTestFactory.ID); verify(commandService).waitUntilDone(command); } @@ -276,7 +276,7 @@ class WiedervorlageServiceTest { var command = CommandTestFactory.create(); when(commandService.waitUntilDone(command)).thenReturn(errorCommand); - var result = service.updateNextFristOnSuccessfullyDoneCommand(command, VorgangHeaderTestFactory.ID); + var result = service.updateNextFrist(command, VorgangHeaderTestFactory.ID); assertThat(result).isEqualTo(errorCommand); } @@ -292,10 +292,10 @@ class WiedervorlageServiceTest { } @Test - public void shouldUpdateNextFrist() { - service.updateNextFristOnSuccessfullyDoneCommand(command, VorgangHeaderTestFactory.ID); + void shouldUpdateNextFrist() { + service.updateNextFrist(command, VorgangHeaderTestFactory.ID); - verify(service).updateNextFrist(VorgangHeaderTestFactory.ID); + verify(service).doUpdateNextFrist(VorgangHeaderTestFactory.ID); } } @@ -310,10 +310,10 @@ class WiedervorlageServiceTest { } @Test - public void shouldNotUpdateNextFrist() { - service.updateNextFristOnSuccessfullyDoneCommand(command, VorgangHeaderTestFactory.ID); + void shouldNotUpdateNextFrist() { + service.updateNextFrist(command, VorgangHeaderTestFactory.ID); - verify(service, never()).updateNextFrist(VorgangHeaderTestFactory.ID); + verify(service, never()).doUpdateNextFrist(VorgangHeaderTestFactory.ID); } }