X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2FErrorCannotBeGeneratedCondition.java;fp=src%2Ftest%2Fjava%2Fde%2Fjuplo%2Fkafka%2FErrorCannotBeGeneratedCondition.java;h=6d772ceb13b2ef9ed29414807e84f6419c179367;hb=da3b3c96a862aa1408933b312ca965dad1bbe482;hp=0000000000000000000000000000000000000000;hpb=657bf71b6c1c99065f26cccf0c3d2a1f30bc9407;p=demos%2Fkafka%2Ftraining diff --git a/src/test/java/de/juplo/kafka/ErrorCannotBeGeneratedCondition.java b/src/test/java/de/juplo/kafka/ErrorCannotBeGeneratedCondition.java new file mode 100644 index 0000000..6d772ce --- /dev/null +++ b/src/test/java/de/juplo/kafka/ErrorCannotBeGeneratedCondition.java @@ -0,0 +1,60 @@ +package de.juplo.kafka; + +import org.junit.jupiter.api.extension.ConditionEvaluationResult; +import org.junit.jupiter.api.extension.ExecutionCondition; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.platform.commons.util.AnnotationUtils; + +import java.util.LinkedList; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + + +public class ErrorCannotBeGeneratedCondition implements ExecutionCondition +{ + @Override + public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context) + { + final Optional optional = + AnnotationUtils.findAnnotation( + context.getElement(), + SkipWhenErrorCannotBeGenerated.class); + + if (context.getTestInstance().isEmpty()) + return ConditionEvaluationResult.enabled("Test-instance ist not available"); + + if (optional.isPresent()) + { + SkipWhenErrorCannotBeGenerated skipWhenErrorCannotBeGenerated = optional.get(); + GenericApplicationTest instance = (GenericApplicationTest)context.getTestInstance().get(); + List missingRequiredErrors = new LinkedList<>(); + + if (skipWhenErrorCannotBeGenerated.poisonPill() && !instance.recordGenerator.canGeneratePoisionPill()) + missingRequiredErrors.add("Poison-Pill"); + + if (skipWhenErrorCannotBeGenerated.logicError() && !instance.recordGenerator.canGenerateLogicError()) + missingRequiredErrors.add("Logic-Error"); + + StringBuilder builder = new StringBuilder(); + builder.append(context.getTestClass().get().getSimpleName()); + + if (missingRequiredErrors.isEmpty()) + { + builder.append(" can generate all required types of errors"); + return ConditionEvaluationResult.enabled(builder.toString()); + } + + builder.append(" cannot generate the required error(s): "); + builder.append( + missingRequiredErrors + .stream() + .collect(Collectors.joining(", "))); + + return ConditionEvaluationResult.disabled(builder.toString()); + } + + return ConditionEvaluationResult.enabled( + "Not annotated with " + SkipWhenErrorCannotBeGenerated.class.getSimpleName()); + } +}