package com.aol.micro.server.events;
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import org.junit.Before;
import org.junit.Test;
import com.google.common.eventbus.EventBus;
public class RequestsBeingExecutedTest {
RequestsBeingExecuted requests;
EventBus bus;
RequestTypes types;
@Before
public void setup() {
bus = new EventBus();
requests = new RequestsBeingExecuted(
bus);
types = new RequestTypes(
bus, true);
types.getMap()
.put("default", requests);
}
@Test
public void oneEvent() {
bus.post(RequestEvents.start("data", 100l));
assertThat(requests.events(), is(1));
}
@Test
public void twoEvents() {
bus.post(RequestEvents.start("data", 100l));
bus.post(RequestEvents.start("data", 120l));
assertThat(requests.events(), is(2));
}
@Test
public void twoIdenticalEvents() {
bus.post(RequestEvents.start("data", 100l));
bus.post(RequestEvents.start("data", 100l));
assertThat(requests.events(), is(2));
}
@Test
public void oneEventSize() {
bus.post(RequestEvents.start("data", 100l));
assertThat(requests.size(), is(1));
}
@Test
public void twoEventsSize() {
bus.post(RequestEvents.start("data", 100l));
bus.post(RequestEvents.start("data", 120l));
assertThat(requests.size(), is(2));
}
@Test
public void twoIdenticalEventsSize() {
bus.post(RequestEvents.start("data", 100l));
bus.post(RequestEvents.start("data", 100l));
assertThat(requests.size(), is(1));
}
@Test
public void twoEventsOneFinished() {
bus.post(RequestEvents.start("data", 100l));
bus.post(RequestEvents.start("data", 120l));
bus.post(RequestEvents.finish("data", 120l));
assertThat(requests.events(), is(2));
assertThat(requests.size(), is(1));
}
@Test
public void twoEventsDifferentTypesOneFinishedDefaultTypeIsIgnored() {
requests = new RequestsBeingExecuted(
bus, "typeA");
types.getMap()
.put("typeA", requests);
bus.post(RequestEvents.start("data", 130l));
bus.post(RequestEvents.start("data", 120l, "typeA", "data2"));
bus.post(RequestEvents.finish("data", 120l, "typeA"));
assertThat(requests.events(), is(1));
assertThat(requests.size(), is(0));
}
@Test
public void testToString() {
bus.post(RequestEvents.start("data", 100l));
bus.post(RequestEvents.start("data", 120l));
bus.post(RequestEvents.finish("data", 120l));
System.out.println(requests.toString());
assertThat(requests.toString(), containsString("\"removed\":1"));
assertThat(requests.toString(), containsString("\"added\":2"));
}
}