Simplify EventHanderTest
-Use DirectExecutor instead of mocking ScheduledThreadPoolExecutor.
-Create a dedicated test for checking EventTask.toString().
-Rename test method with more meaningful names.
Change-Id: I8e458ee87acaf41332c43de284fbcd298e176fbc
diff --git a/src/test/java/com/ericsson/gerrit/plugins/highavailability/event/EventHandlerTest.java b/src/test/java/com/ericsson/gerrit/plugins/highavailability/event/EventHandlerTest.java
index 07ab3c5..5cc957d 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/highavailability/event/EventHandlerTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/highavailability/event/EventHandlerTest.java
@@ -19,80 +19,63 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyZeroInteractions;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.gerrit.server.events.Event;
-import com.google.gerrit.server.events.RefEvent;
+import com.google.gerrit.server.events.ProjectEvent;
+import com.google.gerrit.server.events.RefUpdatedEvent;
+import com.ericsson.gerrit.plugins.highavailability.event.EventHandler.EventTask;
import com.ericsson.gerrit.plugins.highavailability.forwarder.Context;
import com.ericsson.gerrit.plugins.highavailability.forwarder.Forwarder;
+import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-
@RunWith(MockitoJUnitRunner.class)
public class EventHandlerTest {
private static final String PLUGIN_NAME = "high-availability";
- private Event event;
private EventHandler eventHandler;
+
@Mock
private Forwarder forwarder;
+ @Before
+ public void setUp() {
+ eventHandler = new EventHandler(forwarder, MoreExecutors.directExecutor(),
+ PLUGIN_NAME);
+ }
+
@Test
- public void testRightEventAndNotForwarded() throws Exception {
- setUpMocks(true);
+ public void shouldForwardAnyProjectEvent() throws Exception {
+ Event event = mock(ProjectEvent.class);
eventHandler.onEvent(event);
verify(forwarder).send(event);
}
@Test
- public void testRightEventIsForwarded() throws Exception {
- setUpMocks(true);
+ public void shouldNotForwardNonProjectEvent() throws Exception {
+ eventHandler.onEvent(mock(Event.class));
+ verifyZeroInteractions(forwarder);
+ }
+
+
+ @Test
+ public void shouldNotForwardIfAlreadyForwardedEvent() throws Exception {
Context.setForwardedEvent(true);
- eventHandler.onEvent(event);
+ eventHandler.onEvent(mock(ProjectEvent.class));
Context.unsetForwardedEvent();
verifyZeroInteractions(forwarder);
}
@Test
- public void testBadEventAndNotForwarded() throws Exception {
- setUpMocks(false);
- eventHandler.onEvent(event);
- verifyZeroInteractions(forwarder);
- }
-
- @Test
- public void testBadEventAndItIsForwarded() throws Exception {
- setUpMocks(false);
- Context.setForwardedEvent(true);
- eventHandler.onEvent(event);
- Context.unsetForwardedEvent();
- verifyZeroInteractions(forwarder);
- }
-
- private void setUpMocks(boolean rightEvent) {
- ScheduledThreadPoolExecutor pool = new PoolMock(1);
- if (rightEvent) {
- event = mock(RefEvent.class);
- } else {
- event = mock(Event.class);
- }
- eventHandler = new EventHandler(forwarder, pool, PLUGIN_NAME);
- }
-
- private class PoolMock extends ScheduledThreadPoolExecutor {
- PoolMock(int corePoolSize) {
- super(corePoolSize);
- }
-
- @Override
- public void execute(Runnable command) {
- assertThat(command.toString()).isEqualTo(String.format(
- "[%s] Send event '%s' to target instance", PLUGIN_NAME, null));
- command.run();
- }
+ public void tesEventTaskToString() throws Exception {
+ Event event = new RefUpdatedEvent();
+ EventTask task = eventHandler.new EventTask(event);
+ assertThat(task.toString()).isEqualTo(String.format(
+ "[%s] Send event '%s' to target instance", PLUGIN_NAME, event.type));
}
}