use of io.wring.model.Events in project wring by yegor256.
the class JsonAgentTest method makesAgent.
/**
* JsonAgent can make an agent.
* @throws Exception If some problem inside
*/
@Test
public void makesAgent() throws Exception {
final Agent agent = new JsonAgent(new FkBase(), "{\"class\":\"io.wring.agents.FkAgent\"}");
final Events events = Mockito.mock(Events.class);
agent.push(events);
Mockito.verify(events).post(Mockito.anyString(), Mockito.anyString());
}
use of io.wring.model.Events in project wring by yegor256.
the class Cycle method exec.
@Override
public void exec(final Pipe pipe) throws Exception {
final XePrint print = new XePrint(pipe.asXembly());
final Events events = this.base.user(print.text("{/pipe/urn/text()}")).events();
final String json = print.text("{/pipe/json/text()}");
new UncheckedFunc<>(new FuncWithFallback<String, JsonObject>(str -> Json.createReader(new ReaderOf(str)).readObject(), new FuncOf<>(error -> events.post(Cycle.class.getCanonicalName(), String.format("Failed to parse JSON:\n%s\n\n%s", json, new TextOf(new BytesOf(error)).asString()))), obj -> {
if (obj != null) {
new Exec(new JsonAgent(this.base, obj), new IgnoreEvents(new BoostEvents(events, obj), obj), pipe).run();
}
return obj;
})).apply(json);
}
use of io.wring.model.Events in project wring by yegor256.
the class BoostEventsTest method passesEventsThroughByJsonConfig.
/**
* IgnoreEvents can filter out events.
* @throws Exception If some problem inside
*/
@Test
public void passesEventsThroughByJsonConfig() throws Exception {
final Events events = Mockito.mock(Events.class);
final Event event = Mockito.mock(Event.class);
Mockito.doReturn(event).when(events).event(Mockito.anyString());
new BoostEvents(events, Json.createReader(new InputStreamOf("{}")).readObject()).post("the title", "the body");
Mockito.verify(event, Mockito.never()).vote(Mockito.anyInt());
}
use of io.wring.model.Events in project wring by yegor256.
the class BoostEventsTest method boostsEventsByTitle.
/**
* BoostEvents can boost events by title.
* @throws Exception If some problem inside
*/
@Test
public void boostsEventsByTitle() throws Exception {
final Events events = Mockito.mock(Events.class);
final Event event = Mockito.mock(Event.class);
Mockito.doReturn(event).when(events).event(Mockito.anyString());
new BoostEvents(events, "xyz.*").post("xyz", "some body");
Mockito.verify(event).vote(Tv.FIVE);
}
use of io.wring.model.Events in project wring by yegor256.
the class ExecTest method catchesExceptions.
/**
* Exec can catch in case of an error.
* @throws Exception If some problem inside
*/
@Test
public void catchesExceptions() throws Exception {
final Agent agent = Mockito.mock(Agent.class);
final Events events = Mockito.mock(Events.class);
Mockito.doThrow(new IOException("<bug>")).when(agent).push(events);
new Exec(agent, events, new FkPipe()).run();
Mockito.verify(events).post(MockitoHamcrest.argThat(Matchers.startsWith("Internal error (java.io.IOException): \"<bug>\"")), MockitoHamcrest.argThat(Matchers.containsString("java.io.IOException: <bug>\n")));
}
Aggregations