VideoDynamicConsumer.java
package io.github.giulong.spectrum.utils.events.video;
import com.fasterxml.jackson.annotation.JsonView;
import io.github.giulong.spectrum.internals.jackson.views.Views.Internal;
import io.github.giulong.spectrum.pojos.events.Event;
import io.github.giulong.spectrum.types.TestData;
import org.junit.jupiter.api.extension.ExtensionContext;
import java.nio.file.Path;
import static io.github.giulong.spectrum.extensions.resolvers.TestContextResolver.EXTENSION_CONTEXT;
import static io.github.giulong.spectrum.extensions.resolvers.TestDataResolver.TEST_DATA;
import static org.junit.jupiter.api.extension.ExtensionContext.Namespace.GLOBAL;
@JsonView(Internal.class)
public class VideoDynamicConsumer extends VideoConsumer {
@Override
protected boolean shouldAccept(final Event event) {
final boolean superCondition = super.shouldAccept(event);
if (!superCondition) {
return false;
}
final ExtensionContext context = (ExtensionContext) event.getPayload().get(EXTENSION_CONTEXT);
if (context == null) {
return false;
}
final TestData testData = context.getStore(GLOBAL).get(TEST_DATA, TestData.class);
return testData != null && testData.isDynamic();
}
@Override
protected Path getVideoPathFrom(final TestData testData) {
return testData.getDynamicVideoPath();
}
@Override
protected boolean isNewFrame(final byte[] screenshot, final TestData testData) {
final String displayName = testData.getDisplayName();
if (!displayName.equals(testData.getLastFrameDisplayName())) {
testData.setLastFrameDisplayName(displayName);
return true;
}
return super.isNewFrame(screenshot, testData);
}
}