-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<SkipWhenErrorCannotBeGenerated> 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();
- GenericApplicationTests instance = (GenericApplicationTests)context.getTestInstance().get();
- List<String> missingRequiredErrors = new LinkedList<>();
-
- if (skipWhenErrorCannotBeGenerated.poisonPill() && !instance.recordGenerator.canGeneratePoisonPill())
- 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());
- }
-}