protected Statement withStateChanges(final Interaction interaction, final Object target, final Statement prevStatement) { if (!interaction.getProviderStates().isEmpty()) { Statement stateChange = prevStatement; for (ProviderState state: interaction.getProviderStates()) { List<Pair<FrameworkMethod, State>> methods = getAnnotatedMethods(testClass, State.class) .stream() .map(method -> { final State annotation = method.getAnnotation(State.class); return new Pair<>(method, annotation); }) .filter(method -> ArrayUtils.contains(method.getSecond().value(), state.getName())) .collect(Collectors.toList()); if (methods.isEmpty()) { return new Fail(new MissingStateChangeMethod("MissingStateChangeMethod: Did not find a test class method annotated with @State(\"" + state.getName() + "\")")); } else { stateChange = new RunStateChanges(stateChange, methods, target, state); } } return stateChange; } else { return prevStatement; } }
@Override protected ProviderVerifier setupVerifier(Interaction interaction, ProviderInfo provider, ConsumerInfo consumer) { ProviderVerifier verifier = new ProviderVerifier(); setupReporters(verifier, provider.getName(), interaction.getDescription()); verifier.initialiseReporters(provider); verifier.reportVerificationForConsumer(consumer, provider); if (!interaction.getProviderStates().isEmpty()) { for (ProviderState providerState: interaction.getProviderStates()) { verifier.reportStateForInteraction(providerState.getName(), provider, consumer, true); } } verifier.reportInteractionDescription(interaction); return verifier; }
@NotNull @Override protected ProviderVerifier setupVerifier(Interaction interaction, ProviderInfo provider, ConsumerInfo consumer) { ProviderVerifier verifier = new CustomProviderVerifier(getPackagesToScan()); setupReporters(verifier, provider.getName(), interaction.getDescription()); verifier.initialiseReporters(provider); verifier.reportVerificationForConsumer(consumer, provider); if (!interaction.getProviderStates().isEmpty()) { for (ProviderState state : interaction.getProviderStates()) { verifier.reportStateForInteraction(state.getName(), provider, consumer, true); } } verifier.reportInteractionDescription(interaction); return verifier; } }