diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungHistorieProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungHistorieProcessor.java index faa66f1995d3939e8c5f3108ef72e423f2b1afc3..45ecd8907c4844361a93f6f33b031172d2834e95 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungHistorieProcessor.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungHistorieProcessor.java @@ -2,7 +2,6 @@ package de.ozgcloud.alfa.loeschanforderung; import java.util.HashSet; import java.util.Set; -import java.util.function.Predicate; import java.util.stream.Stream; import org.apache.commons.collections.MapUtils; @@ -24,11 +23,6 @@ class LoeschAnforderungHistorieProcessor implements HistorieProcessor { private final CommandService commandService; private final VorgangAttachedItemService vorgangAttachedItemService; - private static final Predicate<? super Command> IS_LOESCH_ANFORDERUNG_ZURUECKNEHMEN = command -> CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN - .equals(command.getCommandOrder()); - private static final Predicate<? super Command> IS_CREATE_ATTACHED_ITEM = command -> CommandOrder.CREATE_ATTACHED_ITEM - .equals(command.getCommandOrder()); - @Override public Stream<Command> process(Stream<Command> commands) { var commandIdsToRemove = new HashSet<String>(); @@ -41,7 +35,7 @@ class LoeschAnforderungHistorieProcessor implements HistorieProcessor { } boolean isNotRevokedLoeschAnforderungZuruecknehmen(Command command) { - if (Predicate.not(IS_LOESCH_ANFORDERUNG_ZURUECKNEHMEN).test(command)) { + if (!isLoeschAnforderungZuruecknehmen(command)) { return true; } var changeStatusCommand = commandService.getById(getChangeStatusCommandId(command)); @@ -49,19 +43,28 @@ class LoeschAnforderungHistorieProcessor implements HistorieProcessor { } boolean isNotCreateLoeschAnforderungVorgangAttachedItem(Command command) { - if (Predicate.not(IS_CREATE_ATTACHED_ITEM).test(command)) { + if (!isCreateAttachedItem(command)) { return true; } return !vorgangAttachedItemService.isLoeschAnforderung(MapUtils.getString(command.getBody(), VorgangAttachedItem.FIELD_ITEM_NAME)); } + private boolean isCreateAttachedItem(Command command) { + return CommandOrder.CREATE_ATTACHED_ITEM.equals(command.getCommandOrder()); + } + Command addLoeschAnforderungZuruecknehmenRelatedCommandIds(Set<String> commandIdsToRemove, Command command) { - if (IS_LOESCH_ANFORDERUNG_ZURUECKNEHMEN.test(command)) { + if (isLoeschAnforderungZuruecknehmen(command)) { commandIdsToRemove.addAll(getCommandBodyIds(command)); } return command; } + private boolean isLoeschAnforderungZuruecknehmen(Command command) { + return CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN.equals(command.getCommandOrder()); + + } + private Set<String> getCommandBodyIds(Command command) { return Set.of(getDeleteAttachedItemCommandId(command), getChangeStatusCommandId(command)); } diff --git a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtHistorieProcessor.java b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtHistorieProcessor.java index 3b7bebb657ee7654024951c4ebcc69a6e1e9e723..6af60c857ed773039bb1f5c86f2e29850e834a7d 100644 --- a/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtHistorieProcessor.java +++ b/alfa-service/src/main/java/de/ozgcloud/alfa/postfach/PostfachNachrichtHistorieProcessor.java @@ -37,11 +37,6 @@ class PostfachNachrichtHistorieProcessor implements HistorieProcessor { return isDirection(command, DIRECTION_OUTGOING); } - @SuppressWarnings("unchecked") - private Map<String, Object> getItemMap(Command command) { - return MapUtils.getMap(command.getBody(), CommandBodyMapper.ITEM_PROPERTY); - } - public Command translateSendPostfachMailCommand(Command command) { if (CommandOrder.SEND_POSTFACH_MAIL == command.getCommandOrder()) { return command.toBuilder().order(CommandOrder.SEND_POSTFACH_NACHRICHT.name()).build(); @@ -75,4 +70,9 @@ class PostfachNachrichtHistorieProcessor implements HistorieProcessor { private boolean isDirection(Command command, String expectedDirection) { return StringUtils.equals(MapUtils.getString(getItemMap(command), DIRECTION), expectedDirection); } + + @SuppressWarnings("unchecked") + private Map<String, Object> getItemMap(Command command) { + return MapUtils.getMap(command.getBody(), CommandBodyMapper.ITEM_PROPERTY); + } } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarHistorieProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarHistorieProcessorTest.java index 957adbee0aad0c30f2d2f05e6472a6fbcc30c20d..c67a8dfc3b86ab32f37c7d889eafb62cb3787ec0 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarHistorieProcessorTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/kommentar/KommentarHistorieProcessorTest.java @@ -3,9 +3,11 @@ package de.ozgcloud.alfa.kommentar; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; +import java.util.List; import java.util.Map; import java.util.stream.Stream; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.mockito.Spy; @@ -27,31 +29,38 @@ class KommentarHistorieProcessorTest { class TestProcess { private final Command command = CommandTestFactory.create(); + private final Command translatedOnceCommand = CommandTestFactory.create(); + private final Command translatedTwiceCommand = CommandTestFactory.create(); - @Test - void shouldPropagateAllOrders() { - doReturn(command).when(processor).translateCreateKommentar(command); - doReturn(command).when(processor).translateEditKommentar(command); - - var commands = processor.process(Stream.of(command)); - - assertThat(commands).containsExactly(command); + @BeforeEach + void mockTranslation() { + doReturn(translatedOnceCommand).when(processor).translateCreateKommentar(command); + doReturn(translatedTwiceCommand).when(processor).translateEditKommentar(translatedOnceCommand); } @Test void shouldCallTranslateCreateKommentar() { - processor.process(Stream.of(command)).toList(); + process(); verify(processor).translateCreateKommentar(command); } @Test void shouldCallTranslateEditKommentar() { - doReturn(command).when(processor).translateCreateKommentar(command); + process(); + + verify(processor).translateEditKommentar(translatedOnceCommand); + } + + @Test + void shouldReturnStreamOfTranslatedCommand() { + var commands = process(); - processor.process(Stream.of(command)).toList(); + assertThat(commands).containsExactly(translatedTwiceCommand); + } - verify(processor).translateEditKommentar(command); + private List<Command> process() { + return processor.process(Stream.of(command)).toList(); } } diff --git a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungHistorieProcessorTest.java b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungHistorieProcessorTest.java index b40291222546762fea0093e35ca4d42844864c27..17ec36a7d571aa97572f9093ab8d8c4fdd835dde 100644 --- a/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungHistorieProcessorTest.java +++ b/alfa-service/src/test/java/de/ozgcloud/alfa/loeschanforderung/LoeschAnforderungHistorieProcessorTest.java @@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.*; import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.*; +import java.util.Collection; import java.util.HashSet; import java.util.Map; import java.util.Set; @@ -80,7 +81,7 @@ class LoeschAnforderungHistorieProcessorTest { void shouldAddLoeschAnforderungZuruecknehmenRelatedCommandIds() { process(); - verify(processor).addLoeschAnforderungZuruecknehmenRelatedCommandIds(anySet(), eq(command)); + verify(processor).addLoeschAnforderungZuruecknehmenRelatedCommandIds(argThat(Collection::isEmpty), eq(command)); } @Test @@ -123,6 +124,13 @@ class LoeschAnforderungHistorieProcessorTest { doReturn(false).when(processor).isNotCreateLoeschAnforderungVorgangAttachedItem(any()); } + @Test + void shouldNotCallAddLoeschAnforderungZuruecknehmenRelatedCommandIds() { + process(); + + verify(processor, never()).addLoeschAnforderungZuruecknehmenRelatedCommandIds(any(), any()); + } + @Test void shouldRemoveCommand() { var commands = process(); @@ -189,7 +197,7 @@ class LoeschAnforderungHistorieProcessorTest { @BeforeEach void mock() { doReturn(changeStatusCommandId).when(processor).getChangeStatusCommandId(any()); - doReturn(CommandTestFactory.create()).when(commandService).getById(any()); + when(commandService.getById(any())).thenReturn(CommandTestFactory.create()); } @Test @@ -300,11 +308,13 @@ class LoeschAnforderungHistorieProcessorTest { } @Nested - class TestGetRevokedLoeschAnforderungIds { + class TestAddLoeschAnforderungZuruecknehmenRelatedCommandIds { private final String changeStatusCommandId = UUID.randomUUID().toString(); private final String deleteAttachedItemCommandId = UUID.randomUUID().toString(); - private final Map<String, ?> commandBody = Map.of(DeleteLoeschAnforderung.CHANGE_STATUS_COMMAND_ID_FIELD, changeStatusCommandId, - DeleteLoeschAnforderung.DELETE_ATTACHED_ITEM_COMMAND_ID_FIELD, deleteAttachedItemCommandId); + private final Map<String, ?> commandBody = Map.of( + DeleteLoeschAnforderung.CHANGE_STATUS_COMMAND_ID_FIELD, changeStatusCommandId, + DeleteLoeschAnforderung.DELETE_ATTACHED_ITEM_COMMAND_ID_FIELD, deleteAttachedItemCommandId, + LoremIpsum.getInstance().getWords(1), UUID.randomUUID().toString()); private final Command command = CommandTestFactory.createBuilder() .order(CommandOrder.LOESCH_ANFORDERUNG_ZURUECKNEHMEN.name()) .body(commandBody)