package uk.co.acuminous.julez.scenario;
import junit.framework.AssertionFailedError;
import org.jbehave.core.embedder.SilentEmbedderMonitor;
import uk.co.acuminous.julez.event.Event;
public class EventRaisingEmbedderMonitor extends SilentEmbedderMonitor {
private final ScenarioEventFactory eventFactory;
private Event event;
public EventRaisingEmbedderMonitor(ScenarioEventFactory eventFactory) {
super(null);
this.eventFactory = eventFactory;
}
@Override
public void storyFailed(String path, Throwable cause) {
if (AssertionFailedError.class.isAssignableFrom(cause.getClass())) {
event = eventFactory.fail();
} else {
event = eventFactory.error();
}
event.getData().put("message", cause.getMessage());
}
public boolean receivedEvent() {
return event != null;
}
public Event getEvent() {
return event;
}
}