1 package de.juplo.kafka;
3 import org.junit.jupiter.api.extension.ConditionEvaluationResult;
4 import org.junit.jupiter.api.extension.ExecutionCondition;
5 import org.junit.jupiter.api.extension.ExtensionContext;
6 import org.junit.platform.commons.util.AnnotationUtils;
8 import java.util.LinkedList;
10 import java.util.Optional;
11 import java.util.stream.Collectors;
14 public class ErrorCannotBeGeneratedCondition implements ExecutionCondition
17 public ConditionEvaluationResult evaluateExecutionCondition(ExtensionContext context)
19 final Optional<SkipWhenErrorCannotBeGenerated> optional =
20 AnnotationUtils.findAnnotation(
22 SkipWhenErrorCannotBeGenerated.class);
24 if (context.getTestInstance().isEmpty())
25 return ConditionEvaluationResult.enabled("Test-instance ist not available");
27 if (optional.isPresent())
29 SkipWhenErrorCannotBeGenerated skipWhenErrorCannotBeGenerated = optional.get();
30 GenericApplicationTests instance = (GenericApplicationTests)context.getTestInstance().get();
31 List<String> missingRequiredErrors = new LinkedList<>();
33 if (skipWhenErrorCannotBeGenerated.poisonPill() && !instance.recordGenerator.canGeneratePoisonPill())
34 missingRequiredErrors.add("Poison-Pill");
36 if (skipWhenErrorCannotBeGenerated.logicError() && !instance.recordGenerator.canGenerateLogicError())
37 missingRequiredErrors.add("Logic-Error");
39 StringBuilder builder = new StringBuilder();
40 builder.append(context.getTestClass().get().getSimpleName());
42 if (missingRequiredErrors.isEmpty())
44 builder.append(" can generate all required types of errors");
45 return ConditionEvaluationResult.enabled(builder.toString());
48 builder.append(" cannot generate the required error(s): ");
52 .collect(Collectors.joining(", ")));
54 return ConditionEvaluationResult.disabled(builder.toString());
57 return ConditionEvaluationResult.enabled(
58 "Not annotated with " + SkipWhenErrorCannotBeGenerated.class.getSimpleName());