Skip to content
Snippets Groups Projects
Commit 8849f74d authored by Felix Reichenbach's avatar Felix Reichenbach
Browse files

OZG-6461 implement KommentarHistorieProcessor

parent 1fbca93d
No related branches found
No related tags found
1 merge request!5Ozg 6461 historie refactoring
......@@ -34,7 +34,6 @@ import de.ozgcloud.alfa.common.command.Command;
import de.ozgcloud.alfa.common.command.CommandBodyMapper;
import de.ozgcloud.alfa.common.command.CommandOrder;
import de.ozgcloud.alfa.common.command.LegacyOrder;
import de.ozgcloud.alfa.kommentar.Kommentar;
import de.ozgcloud.alfa.wiedervorlage.Wiedervorlage;
/**
......@@ -77,9 +76,7 @@ class HistorieCommandHandler {
var itemName = getItemName(command);
itemName.ifPresent(name -> {
if (name.equals(Kommentar.class.getSimpleName())) {
resultBuilder.order(LegacyOrder.CREATE_KOMMENTAR).build();
} else if (name.equals(Wiedervorlage.class.getSimpleName())) {
if (name.equals(Wiedervorlage.class.getSimpleName())) {
resultBuilder.order(LegacyOrder.CREATE_WIEDERVORLAGE).build();
} else if (isOzgCloudNachrichtenManager(command) && isIncomming(command)) {
resultBuilder.order(CommandOrder.RECEIVE_POSTFACH_NACHRICHT.name()).build();
......@@ -102,9 +99,7 @@ class HistorieCommandHandler {
var itemName = getItemName(command);
itemName.ifPresent(name -> {
if (name.equals(Kommentar.class.getSimpleName())) {
resultBuilder.order(LegacyOrder.EDIT_KOMMENTAR).build();
} else if (name.equals(Wiedervorlage.class.getSimpleName())) {
if (name.equals(Wiedervorlage.class.getSimpleName())) {
resultBuilder.order(LegacyOrder.EDIT_WIEDERVORLAGE).build();
}
});
......
package de.ozgcloud.alfa.kommentar;
import java.util.Optional;
import java.util.stream.Stream;
import org.apache.commons.collections.MapUtils;
import de.ozgcloud.alfa.common.command.Command;
import de.ozgcloud.alfa.common.command.CommandBodyMapper;
import de.ozgcloud.alfa.common.command.CommandOrder;
import de.ozgcloud.alfa.common.command.LegacyOrder;
import de.ozgcloud.alfa.historie.HistorieProcessor;
class KommentarHistorieProcessor implements HistorieProcessor {
@Override
public Stream<Command> process(Stream<Command> commands) {
return commands.map(this::translateCreateKommentar).map(this::translateEditKommentar);
}
Command translateCreateKommentar(Command command) {
if (isCreateAttachedItemCommand(command) && hasKommentarItemName(command)) {
return command.toBuilder().order(LegacyOrder.CREATE_KOMMENTAR).build();
}
return command;
}
private boolean isCreateAttachedItemCommand(Command command) {
return CommandOrder.CREATE_ATTACHED_ITEM == command.getCommandOrder();
}
Command translateEditKommentar(Command command) {
if (isUpdateAttachedItemCommand(command) && hasKommentarItemName(command)) {
return command.toBuilder().order(LegacyOrder.EDIT_KOMMENTAR).build();
}
return command;
}
private boolean isUpdateAttachedItemCommand(Command command) {
return CommandOrder.UPDATE_ATTACHED_ITEM == command.getCommandOrder();
}
private boolean hasKommentarItemName(Command command) {
return getItemName(command).filter(itemName -> Kommentar.class.getSimpleName().equals(itemName)).isPresent();
}
private Optional<String> getItemName(Command command) {
return Optional.ofNullable(MapUtils.getString(command.getBody(), CommandBodyMapper.ITEM_NAME_PROPERTY));
}
}
......@@ -62,22 +62,6 @@ class HistorieCommandHandlerTest {
@Nested
class TestTranslateOrders {
@ParameterizedTest
@CsvSource(value = { "CREATE_KOMMENTAR;Kommentar", "CREATE_WIEDERVORLAGE;Wiedervorlage" }, delimiter = ';')
void shouldTranslateToCreateOrder(String target, String itemName) {
var command = handler.translateOrder(createCommand(itemName, CommandOrder.CREATE_ATTACHED_ITEM));
assertThat(command.getOrder()).isEqualTo(target);
}
@ParameterizedTest
@CsvSource(value = { "EDIT_KOMMENTAR;Kommentar", "EDIT_WIEDERVORLAGE;Wiedervorlage" }, delimiter = ';')
void shouldTranslateToEditOrder(String target, String itemName) {
var command = handler.translateOrder(createCommand(itemName, CommandOrder.UPDATE_ATTACHED_ITEM));
assertThat(command.getOrder()).isEqualTo(target);
}
@ParameterizedTest
@CsvSource(value = { "WIEDERVORLAGE_ERLEDIGEN;true", "WIEDERVORLAGE_WIEDEREROEFFNEN;false" }, delimiter = ';')
void shouldTranslateToWiedervolageErledigenOrWiedervolageWiedereroeffnen(String target, String doneValue) {
......
package de.ozgcloud.alfa.kommentar;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import java.util.Map;
import java.util.stream.Stream;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.mockito.Spy;
import com.thedeanda.lorem.LoremIpsum;
import de.ozgcloud.alfa.common.command.Command;
import de.ozgcloud.alfa.common.command.CommandBodyMapper;
import de.ozgcloud.alfa.common.command.CommandOrder;
import de.ozgcloud.alfa.common.command.CommandTestFactory;
import de.ozgcloud.alfa.common.command.LegacyOrder;
class KommentarHistorieProcessorTest {
@Spy
private KommentarHistorieProcessor processor;
@Nested
class TestProcess {
private final Command command = 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);
}
@Test
void shouldCallTranslateCreateKommentar() {
processor.process(Stream.of(command)).toList();
verify(processor).translateCreateKommentar(command);
}
@Test
void shouldCallTranslateEditKommentar() {
doReturn(command).when(processor).translateCreateKommentar(command);
processor.process(Stream.of(command)).toList();
verify(processor).translateEditKommentar(command);
}
}
@Nested
class TestTranslateCreateKommentar {
@Nested
class TestOnNotCreateAttachedItem {
@Test
void shouldReturnSameCommand() {
var command = CommandTestFactory.create();
var resultCommand = processor.translateCreateKommentar(command);
assertThat(resultCommand).isSameAs(command);
}
}
@Nested
class TestOnCreateAttachedItem {
private Command.CommandBuilder commandBuilder = CommandTestFactory.createBuilder()
.order(CommandOrder.CREATE_ATTACHED_ITEM.name());
@Nested
class TestOnIsCreateKommentar {
@Test
void shouldTranslateToCreateKommentar() {
var commandBody = Map.of(CommandBodyMapper.ITEM_NAME_PROPERTY, Kommentar.class.getSimpleName());
var command = commandBuilder.body(commandBody).build();
var expectedCommand = CommandTestFactory.createBuilder()
.order(LegacyOrder.CREATE_KOMMENTAR)
.body(commandBody)
.build();
var resultCommand = processor.translateCreateKommentar(command);
assertThat(resultCommand).usingRecursiveComparison().isEqualTo(expectedCommand);
}
}
@Nested
class TestOnIsNotCreateKommentar {
@Test
void shouldReturnSameCommand() {
var commandBody = Map.of(CommandBodyMapper.ITEM_NAME_PROPERTY, LoremIpsum.getInstance().getWords(1));
var command = commandBuilder.body(commandBody).build();
var resultCommand = processor.translateCreateKommentar(command);
assertThat(resultCommand).isSameAs(command);
}
}
}
}
@Nested
class TestTranslateEditKommentar {
@Nested
class TestOnNotUpdateAttachedItem {
@Test
void shouldReturnSameCommand() {
var command = CommandTestFactory.create();
var resultCommand = processor.translateEditKommentar(command);
assertThat(resultCommand).isSameAs(command);
}
}
@Nested
class TestOnUpdateAttachedItem {
private Command.CommandBuilder commandBuilder = CommandTestFactory.createBuilder()
.order(CommandOrder.UPDATE_ATTACHED_ITEM.name());
@Nested
class TestOnIsEditKommentar {
@Test
void shouldTranslateToCreateKommentar() {
var commandBody = Map.of(CommandBodyMapper.ITEM_NAME_PROPERTY, Kommentar.class.getSimpleName());
var command = commandBuilder.body(commandBody).build();
var expectedCommand = CommandTestFactory.createBuilder()
.order(LegacyOrder.EDIT_KOMMENTAR)
.body(commandBody)
.build();
var resultCommand = processor.translateEditKommentar(command);
assertThat(resultCommand).usingRecursiveComparison().isEqualTo(expectedCommand);
}
}
@Nested
class TestOnIsNotEditKommentar {
@Test
void shouldReturnSameCommand() {
var commandBody = Map.of(CommandBodyMapper.ITEM_NAME_PROPERTY, LoremIpsum.getInstance().getWords(1));
var command = commandBuilder.body(commandBody).build();
var resultCommand = processor.translateEditKommentar(command);
assertThat(resultCommand).isSameAs(command);
}
}
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment